为什么用`var`定义的匿名函数可以在全局范围内调用?

时间:2012-11-27 05:35:37

标签: javascript

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()函数之外工作......

1 个答案:

答案 0 :(得分:4)

使用var声明的变量始终将是本地的,并且无法从外部访问。

如果在控制台中运行此命令,则更有可能通过早期尝试污染了全局命名空间。打开一个新选项卡并再次运行代码。