Why is x undefined in inner scope?
本问题已经有最佳答案,请猛点这里访问。
在下面的代码中
1 2 3 4 5 6 | var x = 1; (function () { console.log(x); var x = 2; }()); |
为什么当console.log(x),x未定义?
可变起重。实际代码是这样执行的。
1 2 3 4 5 6 | var x = 1; (function() { var x; // x = undefined console.log(x); x = 2; })(); |
编辑:根据李斯特先生的建议,有一点关于变量提升。来自MDN(https://developer.mozilla.org/en-us/docs/web/javascript/reference/statements/var):
变量声明,无论发生在哪里,都会在执行任何代码之前进行处理。用var声明的变量的范围是其当前执行上下文,该上下文是封闭函数,或者对于在任何函数外部声明的变量,是全局的。"
由于编译器的原因,即使您在代码下面初始化一个var,编译器也会将它发送到顶部,就像