这是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
应该是本地的。但它不是以这种方式行事。有人请清除我的怀疑......请检查this小提琴。
答案 0 :(得分:3)
将发生以下情况:
系统弹出警告,显示aa
= 10
警告弹出,说undefined
,因为您尝试从全局范围访问变量x
,但x
仅在函数范围内定义。
控制台中的错误ReferenceError: x is not defined
。
因此,正如您所假设的那样,x确实是私有的,您无法全局访问它。
你可能搞砸了一些错误的结果。
可能是这样的情况是你忘记了x
前面的var,它突然使它成为全局对象的成员而不是被限制在函数范围内。在这种情况下,最后一个警报会给你13.然而警报(typeof x)会给你"number"
。