第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

關(guān)于書上的demo有幾個(gè)問題想問

關(guān)于書上的demo有幾個(gè)問題想問

紅糖糍粑 2018-09-03 17:09:24
function(){}();這是什么寫法?。坎皇菓?yīng)該是(function(){}())這樣寫嗎?2.注釋中“+price 轉(zhuǎn)化為數(shù)字類型”,這是什么原理?3.按照這樣寫出來最后的結(jié)果并不是數(shù)字,而是Object{},到底在哪里出錯(cuò)了呢?如果去掉function(){}()后面的括號(hào)輸出的結(jié)果是function(algorithm, price),我有點(diǎn)蒙,看了半天不知道錯(cuò)在哪里,怎么修改。希望好心人能指點(diǎn)一二。
查看完整描述

1 回答

?
慕森卡

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊

這些都是小知識(shí)點(diǎn),還是系統(tǒng)的學(xué)習(xí)比較好,圖快反而會(huì)適得其反。

1.function(){}();這是什么寫法???不是應(yīng)該是(function(){}())這樣寫嗎?

后者的作用是將里面的立即執(zhí)行函數(shù)轉(zhuǎn)換為函數(shù)表達(dá)式,而你的代碼中賦值語句本身就是一個(gè)表達(dá)式,所以不用轉(zhuǎn)換了。

2.注釋中“+price 轉(zhuǎn)化為數(shù)字類型”,這是什么原理?

百度JS中+號(hào)操作符,或者查MDN,查規(guī)范都行。

3.按照這樣寫出來最后的結(jié)果并不是數(shù)字,而是Object{},到底在哪里出錯(cuò)了呢?

new一個(gè)構(gòu)造函數(shù)的時(shí)候,返回的是構(gòu)造函數(shù)的實(shí)例,如果構(gòu)造函數(shù)里返回的是一個(gè)對象,數(shù)組,函數(shù),則返回該對象,數(shù)組,函數(shù),而你返回的不是這些,是一個(gè)基本數(shù)據(jù)類型,他會(huì)自動(dòng)忽略掉基本數(shù)據(jù)類型。

所以,改法如下:

// 價(jià)格策略對象var PriceStrategy = function () {    // 內(nèi)部算法對象
    var strategy = {        // 滿100返30
        return30 : function ( price ) {            
        // parseInt可通過~~、|等運(yùn)算符替換,要注意此時(shí)price要在[-2147483648,2147483648]之間
            // +price 轉(zhuǎn)化為數(shù)字類型
            return +price + parseInt( price / 100 ) * 30 ;
        },        // 滿100返50
        return50 : function ( price ) {            
        // parseInt可通過~~、|等運(yùn)算符替換,要注意此時(shí)price要在[-2147483648,2147483648]之間
            // +price 轉(zhuǎn)化為數(shù)字類型
            return +price + parseInt( price / 100 ) * 50 ;
        },        // 9折
        percent90 : function ( price ) {            // JavaScript在處理小數(shù)時(shí)有BUG,故運(yùn)算之前轉(zhuǎn)化為整數(shù)
            return price * ( 100 * 90 / 10000 ) ;
        },        percent80 : function ( price ) {            return price * ( 100 * 80 / 10000 ) ;
        },        percent50 : function ( price ) {            return price * ( 100 * 50 / 10000 ) ;
        }
    };    // 算法調(diào)用接口
    return function ( algorithm , price ) {        // 如果算法存在,則調(diào)用算法,否則返回false
        var o = {};
        strategy[algorithm] && (o.result = strategy[algorithm](price));        return o;
    }
}();var price = new PriceStrategy ( 'percent50' , '345.32' ).result;console.log ( price );



查看完整回答
反對 回復(fù) 2018-10-18
  • 1 回答
  • 0 關(guān)注
  • 583 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)