简单的例子:
var b = function (msg) {
(function inn() {
console.log(msg);
var msg = 0;
})();
} b("15");
此代码将记录“未定义”,因为第 4 行的本地“msg”是在该行实际执行之前声明的。在这方面的文档中有什么要点吗?
简单的例子:
var b = function (msg) {
(function inn() {
console.log(msg);
var msg = 0;
})();
} b("15");
此代码将记录“未定义”,因为第 4 行的本地“msg”是在该行实际执行之前声明的。在这方面的文档中有什么要点吗?
它被称为变量提升。
语言规范说:10.5 声明绑定实例化:
进入执行上下文时,在 VariableEnvironment 中创建绑定,如下所示……对于代码中的每个 VariableDeclaration 和 VariableDeclarationNoIn d……调用 env 的 CreateMutableBinding 具体方法
MDN 有一个更易读的解释:
在 JavaScript 中,变量可以在使用后声明。因此,建议始终在函数顶部声明变量。否则,可能会导致案件混乱。