在这篇Mozilla 文章中,我读到:
JavaScript 中变量的另一个不同寻常之处在于,您可以引用稍后声明的变量,而不会出现异常。这个概念被称为提升;JavaScript 中的变量在某种意义上被“提升”或提升到函数或语句的顶部。但是,尚未初始化的变量将返回未定义的值。
然后是一些例子:
/**
* Example 1
*/
console.log(x === undefined); // logs "true"
var x = 3;
/**
* Example 2
*/
// will return a value of undefined
var myvar = "my value";
(function() {
console.log(myvar); // undefined
var myvar = "local value";
})();
上面的示例 2 将被解释为:
var myvar = "my value";
(function() {
var myvar;
console.log(myvar); // undefined
myvar = "local value";
})();
我没有看到任何东西被“提升”——至少不是在我传统上解释这个词的定义的意义上:变量似乎undefined
直到它们被声明之后。您在什么意义上可以“引用稍后声明的变量”?