首页 > 解决方案 > IIFE 中的变量可在全局范围内访问

问题描述

这个 IIFE 的输出怎么是 5?

(function() {
  var a = b = 5;
})();

console.log(b);

我尝试了 console.log(a) 但它给出了一个参考错误,正如预期的那样,“b”在全局范围内是如何存在的?

标签: javascriptiife

解决方案


发生这种情况仅仅是因为您声明b为全局变量,而不是本地变量。

(function() {
  var a = b = 5;
})();

由于,它可能看起来像是在本地定义的var,但这仅适用于a


推荐阅读