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

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

for循環(huán)中的let關(guān)鍵字

for循環(huán)中的let關(guān)鍵字

慕哥9229398 2019-11-13 14:59:35
ECMAScript 6 let應(yīng)該提供塊范圍,而不會(huì)引起麻煩。有人可以解釋為什么在i函數(shù)下面的代碼中,解析為循環(huán)中的最后一個(gè)值(與一樣var),而不是當(dāng)前迭代中的值嗎?"use strict";var things = {};for (let i = 0; i < 3; i++) {    things["fun" + i] = function() {        console.log(i);    };}things["fun0"](); // prints 3things["fun1"](); // prints 3things["fun2"](); // prints 3根據(jù)MDNlet在這樣的for循環(huán)中使用,應(yīng)該將變量綁定在循環(huán)主體的范圍內(nèi)。當(dāng)我在塊中使用臨時(shí)變量時(shí),事情按預(yù)期運(yùn)行。為什么有必要?"use strict";var things = {};for (let i = 0; i < 3; i++) {    let index = i;    things["fun" + i] = function() {        console.log(index);    };}things["fun0"](); // prints 0things["fun1"](); // prints 1things["fun2"](); // prints 2我使用Traceur和來(lái)測(cè)試了腳本node --harmony。
查看完整描述

3 回答

?
蝴蝶不菲

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

quin著眼睛的答案不再是最新的。在ECMA 6規(guī)范中,指定的行為是


for(let i;;){}

i 在循環(huán)的每次迭代中獲取一個(gè)新的綁定。


這意味著每個(gè)閉包都捕獲一個(gè)不同的i實(shí)例。因此,截至目前的結(jié)果012是正確的結(jié)果。在Chrome v47 +中運(yùn)行此程序時(shí),您將獲得正確的結(jié)果。在IE11和Edge中運(yùn)行它時(shí),當(dāng)前333似乎會(huì)產(chǎn)生不正確的結(jié)果()。


有關(guān)此錯(cuò)誤/功能的更多信息,請(qǐng)參見(jiàn)本頁(yè)中的鏈接;


由于使用let表達(dá)式時(shí),每次迭代都會(huì)創(chuàng)建一個(gè)新的詞匯作用域,該作用域鏈接到先前的作用域。這對(duì)于使用該let表達(dá)式有性能影響,在此處進(jìn)行了報(bào)道。


查看完整回答
反對(duì) 回復(fù) 2019-11-13
?
梵蒂岡之花

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

恕我直言-最初實(shí)施此LET(產(chǎn)生初始版本的結(jié)果)的程序員在理智方面做得正確;他們可能沒(méi)有在實(shí)施過(guò)程中瀏覽過(guò)規(guī)格。


使用單個(gè)變量更有意義,但范圍僅限于for循環(huán)。特別是因?yàn)閼?yīng)該根據(jù)循環(huán)中的條件隨意更改該變量。


但是,等等-您可以更改循環(huán)變量。WTFJS !!但是,如果您嘗試在內(nèi)部作用域中對(duì)其進(jìn)行更改,則由于它是一個(gè)新變量,因此現(xiàn)在將無(wú)法使用。


我不喜歡要做的事情以獲得想要的東西(對(duì)于for是局部的單個(gè)變量):


{

    let x = 0;

    for (; x < length; x++)

    {

        things["fun" + x] = function() {

            console.log(x);

        };

    }

}

在何處修改更直觀(guān)(如果是虛構(gòu)的)版本以在每次迭代中處理新變量:


for (let x = 0; x < length; x++)

{

    let y = x;

    things["fun" + y] = function() {

        console.log(y);

    };

}

顯而易見(jiàn),我對(duì)y變量的意圖是什么?;蛘呷绻鸖ANITY統(tǒng)治了宇宙,那將是我的意圖。


因此,您的第一個(gè)示例現(xiàn)在可以在FF中使用;它會(huì)產(chǎn)生0、1、2。您可以解決此問(wèn)題。我稱(chēng)這個(gè)問(wèn)題為WTFJS。


ps。我對(duì)WTFJS的引用來(lái)自上面的JoeyTwiddle;這聽(tīng)起來(lái)像是我今天之前應(yīng)該知道的一個(gè)模因,但是今天是學(xué)習(xí)它的好時(shí)機(jī)。


查看完整回答
反對(duì) 回復(fù) 2019-11-13
  • 3 回答
  • 0 關(guān)注
  • 753 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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