我發現自己的Javascript的變量範圍,有人可以向我解釋爲什麼第一個示例不起作用,但第二個呢?由Javascript的變量範圍迷惑
function test() {
return typeof(the_variable) !== 'undefined' && the_variable;
}
(function() {
var the_variable = "doesn't work";
console.log(test());
}());
var the_variable = "does work";
console.log(test());
輸出我在日誌中得到:
false
does work
我也想知道怎麼做類似於第一個例子中的東西,
乾杯,戴夫。
但測試函數被調用匿名函數的範圍內,爲什麼不能測試看到匿名函數的範圍裏面的東西? – kzar 2012-02-22 17:26:24
更明確地說,把'var foo'放在一個範圍內的任何地方都完全等同於把它作爲範圍內的第一項。 – gsnedders 2012-02-22 17:27:31
@kzar因爲它不是調用鏈範圍,所以它是詞法範圍。 – gsnedders 2012-02-22 17:28:05