【发布时间】:2018-06-05 12:50:41
【问题描述】:
最近被问到下面的 JavaScript 代码会产生什么结果,正确的答案让我很困惑:
(function () {
var a = b = 5;
})();
console.log(b);
我原以为这会打印 undefined,但它实际上会打印 5。
据我了解,在 IIFE(立即调用函数表达式)中定义的所有变量都应该不在其范围之外可见。这些变量声明的顺序究竟如何使b 在其范围之外可见而a 在其范围之外不可见?
【问题讨论】:
-
b在此处全局声明。var a, b = 5将在本地声明两者,但不会将任何内容分配给a。 -
又一次
"use strict"可以避免所有的痛苦。
标签: javascript var iife