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

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

在 for 循環(huán)初始化中使用 let 時,為什么 let 變量在封閉范圍內(nèi)不可用?

在 for 循環(huán)初始化中使用 let 時,為什么 let 變量在封閉范圍內(nèi)不可用?

慕妹3146593 2021-06-09 10:33:50
這對我來說一直是一個揮之不去的問題:如果當(dāng) alet或const標(biāo)識符包含在大括號中時創(chuàng)建塊范圍,那么循環(huán)let的初始化語句中的標(biāo)識符如何for在封閉范圍內(nèi)不可用,而是在大括號內(nèi)可用for循環(huán)的括號?(function() {  for (let i = 0; i < 5; i++) {   console.log(i) // logs current value of i  }  console.log(i) // referenceError})()
查看完整描述

3 回答

?
喵喔喔

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

這就是事情的運(yùn)作方式。在這樣的for循環(huán)頂部聲明的變量僅在當(dāng)前迭代的for塊內(nèi)可見。你可以這樣想:


<loop> {

  let i = getCount();

  console.log(i) // logs current value of i

}

wheregetCount運(yùn)行遞增的邏輯i。


用 with 聲明的變量let是塊范圍的 -i在外部引用是沒有意義的。如果i 是的外部可見的for,你會想到它的價值是?i對于循環(huán)的每次迭代,您已經(jīng)有了一個單獨(dú)的綁定。有點(diǎn)隨意地選擇這些綁定之一在外面可見是沒有意義的。


查看完整回答
反對 回復(fù) 2021-06-18
?
慕萊塢森

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

因?yàn)樗莊or循環(huán)中的局部變量,而不是在循環(huán)之外。如果您已在循環(huán)外聲明它,則可以正確訪問它。


(function() {

  let i;

  for (i = 0; i < 5; i++) {

   console.log(i);

  }

  console.log(i);

})();


查看完整回答
反對 回復(fù) 2021-06-18
?
UYOU

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

如果您不想更改語法,可以使用var.


(function() {

    for (var i = 0; i < 5; i++) {

        console.log(i);

    }

    console.log(i); 

    // this should work.

})()

否則,使用let或聲明的變量const具有所謂的塊范圍,這意味著它僅在定義它的花括號內(nèi)可見。這本質(zhì)上是let和之間的根本區(qū)別var。與聲明的變量var具有函數(shù)范圍(這整個功能是可見的,它的詞匯的定義,它的價值也只是甚至之前undefined)


(function() {

    console.log(i); // undefined

    var i = 10;

    console.log(i); // 10

 })();

但是上面的例子只有在沒有"use strict"任何地方時才有效。


查看完整回答
反對 回復(fù) 2021-06-18
  • 3 回答
  • 0 關(guān)注
  • 317 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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