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

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声明的变量总是本地的,不能从外部访问。

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

链接地址: http://www.djcxy.com/p/51693.html

上一篇: Why can anonymous functions defined with `var` be called in global scope?

下一篇: jQuery and $ questions