简单的例子:
var b = function (msg) {
(function inn() {
console.log(msg);
var msg = 0;
})();
} b("15");
此代码将记录'undefined',因为第4行上的本地'msg'是在实际执行此行之前声明的。关于这个文件有什么意义吗?
答案 0 :(得分:4)
它被称为变量吊装。
答案 1 :(得分:1)
语言规范说:10.5 Declaration Binding Instantiation:
在输入执行上下文时,在VariableEnvironment中创建绑定,如下所示...对于代码中的每个VariableDeclaration和VariableDeclarationNoIn,请执行以下操作...调用env的CreateMutableBinding具体方法
MDN有a more readable explanation:
在JavaScript中,变量可以在使用后声明。因此,建议始终在函数顶部声明变量。否则,可能会导致令人困惑的案件。