在这篇 mozilla文章中,我读到:
关于JavaScript中变量的另一个不同寻常之处在于,您可以引用稍后声明的变量,而不会出现异常.这个概念被称为吊装; JavaScript中的变量在某种意义上是"被提升"或被提升到函数或语句的顶部.但是,尚未初始化的变量将返回undefined值.
然后是一些例子:
/**
* 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";
})();
Run Code Online (Sandbox Code Playgroud)
上面的示例2将被解释为:
var myvar = "my value";
(function() {
var myvar;
console.log(myvar); // undefined
myvar = "local value";
})();
Run Code Online (Sandbox Code Playgroud)
我没有看到任何被"悬挂"的东西 - 至少在我传统上解释这个词的定义的意义上来说:它似乎是变量,undefined直到它们被宣布之后.在什么意义上你可以"引用后来声明的变量"?
当你使用var它时,它被"提升"到函数声明的顶部.让我们再看一下第二个例子:
var myvar = "my value";
(function() {
console.log(myvar); // undefined
var myvar = "local value";
})();
Run Code Online (Sandbox Code Playgroud)
请注意如何var myvar = 'my value'被宣布第一.接下来,在函数范围内console.log(myvar)调用.结果是"未定义".为什么?您认为这将是"我的价值",因为这是代码的顺序.
因为var myvar函数范围中的局部变量是悬挂的,所以它没有定义.这基本上相当于编写这样的函数:
(function() {
var myvar;
console.log(myvar); // undefined
myvar = "local value";
})();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
319 次 |
| 最近记录: |