【发布时间】:2012-07-17 13:45:59
【问题描述】:
这是Question 的扩展。我试过下面的代码来理解 JavaScript 范围
var a = function(){
var aa = 10;
var x = 13;
b = function(){ c = function(){ alert(aa); }; };
};
a();
b();
c();
alert(typeof x); // Undefined
alert(x); // Returned me 13.
我的查询是我在一个全局函数中用var 声明了变量。据我了解x 应该是本地的。但它不是那样行事。有人请清除我的疑问...请检查thisfiddle。
【问题讨论】:
-
x的作用域是分配给a的函数。最后一个alert从未真正出现 - 你会得到一个 SyntaxError 因为x没有定义。 -
你不可能得到 13,你会得到 'x is not defined' 因为 x 是在 a 范围内。也许你在全局范围内的某个地方也设置了 x = 13。
-
不可能提醒“13”。
-
如果您在开发者控制台中测试您的代码,您需要确保刷新页面以清除之前设置的所有
x全局变量。 -
@SoI - 您链接的小提琴没有提醒“13”。它会警告“10”,因为您在分配给
c的函数内警告aa的值。
标签: javascript scope