我发现自己的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