宣稱「讓」變量考慮一下:的ReferenceError在外部範圍
'use strict';
{
let p = 1;
{
console.log(p);
let p = 2;
}
}
一個直覺告訴我們應該記錄爲「1」(因爲VAR必須保留其舊重新宣佈之前的價值)。但是,實際結果是ReferenceError。這是爲什麼? (基於標準的解釋將被讚賞)。
請注意,我已經在外部範圍聲明瞭p
,所以它在內部塊中已知。如果你註釋掉p=2
這一行,一切正常。
作爲驗屍筆記,雖然這種行爲似乎被記錄,但它仍然是非常直觀的,參見。這個C代碼:
void main() {
int p = 1;
{
printf("%d\n", p); // prints '1'
int p = 2;
}
}
另一個JS fuckup特點要記的!
_「如果你註釋掉p = 2的行,那麼一切正常。」_當然,它確實......你沒有一個衝突的塊範圍變量。 –