我在玩一些代碼,遇到了一種情況,我無法確定爲什麼'let'的行爲是這樣。let關鍵字問題
對於以下代碼塊:
var x = 20; // global scope
function f() {
let x = x || 30;
}
f(); // VM3426:1 Uncaught ReferenceError: x is not defined(…)
我得到的錯誤上執行F 'x被沒有定義'()。我明白「讓」變量不會被提升,但是因爲'x'有全局副本,爲什麼函數'f'中的行不是全局副本而是拋出錯誤? 在函數的開頭,'let'是否設置變量未聲明(而不是由於提升引起的'未定義'var)? 有沒有辦法在函數中獲取'x'的全局副本?
的[「讓」的關鍵字與「VAR」可能的複製關鍵字在Javascript](http://stackoverflow.com/questions/762011/let-keyword-vs-var-keyword-in-javascript) – ozil
本地'x'的聲明是陰影的全球之一,但你是根據現有的'x'分配一個值,compliler ca沒有找到一個像一個是被遮蔽的,另外一個還沒有被宣佈。 –