具有全局范围的JavaScript变量

时间:2012-07-18 13:42:47

标签: javascript scope

这是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小提琴。

1 个答案:

答案 0 :(得分:3)

将发生以下情况:

系统弹出警告,显示aa = 10

的值

警告弹出,说undefined,因为您尝试从全局范围访问变量x,但x仅在函数范围内定义。

控制台中的错误ReferenceError: x is not defined

因此,正如您所假设的那样,x确实是私有的,您无法全局访问它。

你可能搞砸了一些错误的结果。

可能是这样的情况是你忘记了x前面的var,它突然使它成为全局对象的成员而不是被限制在函数范围内。在这种情况下,最后一个警报会给你13.然而警报(typeof x)会给你"number"