正在學(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)該是這樣的,有點理不清了。
如何理解es6關(guān)于暫時性死區(qū)的問題
胡子哥哥
2019-06-13 09:59:08