0

简单的例子:

var b = function (msg) {
   (function inn() {
       console.log(msg);
       var msg = 0; 
   })();
} b("15");

此代码将记录“未定义”,因为第 4 行的本地“msg”是在该行实际执行之前声明的。在这方面的文档中有什么要点吗?

4

2 回答 2

4

它被称为变量提升。

这是关于它的文档

于 2013-07-17T13:37:56.257 回答
1

语言规范说:10.5 声明绑定实例化

进入执行上下文时,在 VariableEnvironment 中创建绑定,如下所示……对于代码中的每个 VariableDeclaration 和 VariableDeclarationNoIn d……调用 env 的 CreateMutableBinding 具体方法

MDN 有一个更易读的解释

在 JavaScript 中,变量可以在使用后声明。因此,建议始终在函数顶部声明变量。否则,可能会导致案件混乱。

于 2013-07-17T13:40:05.847 回答