2012-11-27 46 views
-3
 
function setupSomeGlobals() { 
    // Local variable that ends up within closure 
    var num = 666; 
    // Store some references to functions as global variables 
    var gAlertNumber = function() { console.log(num); } 
} 

setupSomeGlobals(); 

gAlertNumber(); //works, WHY?!! 

console.log(num); //does not work, GOOD 

我预期gAlertNumber(),以不setupSomeGlobals以外工作()函数...为什么在全局范围内调用`var`定义的匿名函数?

+5

我争辩说,调用gAlertNumber()在像这样的全局上下文中工作。 – kinakuta

+1

你确定吗?你在运行你的JS代码?我刚刚在节点上尝试过,并且都如预期那样失败。 – DrC

+0

它没有。显示_your_代码。 –

回答

4

var声明的变量是总是将是本地并不会从外部访问。

如果您在控制台中执行此操作,则很可能您已经通过先前的尝试污染了全局名称空间。打开一个新选项卡并再次运行代码。

相关问题