-6

这是对问题的扩展。我试过下面的代码来理解 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应该是本地的。但它不是那样行事。有人请清除我的疑问......请检查这个小提琴。

4

1 回答 1

3

将发生以下情况:

弹出一个警报,显示aa=的值10

弹出一个警报,说undefined因为您试图x从全局范围访问变量,但是x仅在函数 a 的范围内定义。

您的控制台中出现错误,ReferenceError: x is not defined.

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

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

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

于 2012-07-18T13:52:27.617 回答