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

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

如何理解es6關(guān)于暫時性死區(qū)的問題

如何理解es6關(guān)于暫時性死區(qū)的問題

胡子哥哥 2019-06-13 09:59:08
正在學(xué)習(xí)ES6的內(nèi)容,看的是阮一峰老師出的書,看到變量聲明那里,關(guān)于暫時性死區(qū)的內(nèi)容。這里有一個例子:vartmp=123;if(true){tmp='abc';//ReferenceError:tmpisnotdefinedlettmp;}看完對這個例子的解析,還是沒有解決我的疑問。我不把let的聲明放到代碼塊前面。我是這么看這個例子的:首先,因為代碼中沒有函數(shù),所以聲明了一個全局的變量tmp并且初始化一個值123。然后進(jìn)入條件語句之后,再給這個全局變量重新賦值,接著后面聲明了一個只在花括號內(nèi)有效的和全局變量同名的一個變量。最后報錯。tmp沒有定義,可是明明已經(jīng)全局聲明過tmp了,所以這么報錯是因為和局部的塊作用域的tmp沖突了。然后改下代碼,換了let變量名:vartmp=123;if(true){tmp='abc';lettemp;}//輸出abc這來自全局tmp沒有報錯,并且輸出abc,塊作用域的temp不受影響結(jié)論是,代碼塊內(nèi)不能聲明和全局變量同名的變量?這顯然不應(yīng)該是這樣的,有點理不清了。
查看完整描述

2 回答

?
九州編程

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

JavaScript引擎在掃描代碼發(fā)現(xiàn)變量聲明時,要么將它們提升至作用域頂部(遇到var聲明),要么將聲明放到TDZ中(遇到let和const聲明),訪問TDZ中的變量會觸發(fā)運行時錯誤。只要執(zhí)行過變量聲明語句后,變量才會從TDZ中移除,然后方可正常訪問。
vartmp=123;
if(true){
tmp='abc';//ReferenceError:tmpisnotdefined
lettmp;
}
當(dāng)訪問if里的tmp時,訪問的是TDZ中的tmp,而不是全局的tmp。
                            
查看完整回答
反對 回復(fù) 2019-06-13
?
寶慕林4294392

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

只要塊級作用域里存在let命令,它所聲明的變量就綁定這個區(qū)域,不在受外部的影響

let 和 const 聲明的變量不會被提升到作用域頂部,如果在聲明之前訪問這些變量,會導(dǎo)致報錯:

???console.log(typeof?value);?//?Uncaught?ReferenceError:?value?is?not?defined
???let?value?=?1;

復(fù)制代碼這是因為 JavaScript 引擎在掃描代碼發(fā)現(xiàn)變量聲明時,要么將它們提升到作用域頂部(遇到 var 聲明),要么將聲明放在 TDZ 中(遇到 let 和 const 聲明)。訪問 TDZ 中的變量會觸發(fā)運行時錯誤。只有執(zhí)行過變量聲明語句后,變量才會從 TDZ 中移出,然后方可訪問。

function?show(falg){??????????????????????????//?JavaScript引擎在掃描代碼發(fā)現(xiàn)變量??????TDZ暫時性死區(qū)(有l(wèi)et申明)console.log(a);//報錯:?a?is?not?defined???????????????//a????????????????????????????????放入(未申明引用報錯)???????
????if(falg){//在第134行和第137行的大括號之間,
????????let?a="111";?????????????????????????????????//a="111"
????????console.log(a);?//?111???????????????????????//a????????????????????????????????移除(已申明引用移除)
????}else{????????console.log(a);//報錯:?a?is?not?defined???????//a????????????????????????????????放入(未申明引用報錯)
????}
????
}
show(true);
show(false);


查看完整回答
反對 回復(fù) 2019-06-13
  • 2 回答
  • 0 關(guān)注
  • 577 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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