我對JavaScript範圍的理解有一個相當的理解 - 語言具有函數級作用域,變量和函數聲明被提升到其包含範圍的頂部。不過,我不明白,爲什麼下面的代碼兩塊登錄不同的值:對JavaScript範圍的困惑
該記錄的值1到控制檯:
var a = 1;
function b() {
a = 10;
return;
function a() {}
}
b();
console.log(a);
而神祕,這會將10:
var a = 1;
function b() {
a = 10;
return;
}
b();
console.log(a);
那麼發動機罩下面發生了什麼?
['use strict'](http://stackoverflow.com/questions/1335851/)將不允許像第一個例子那樣聲明一個函數,所以它可能是一個非常糟糕的想法開始。 – transistor09
有趣,但它更像是一個設計問題。 –