“悬挂”在这些例子中this Mozilla的文章,我读:如何在JavaScript的变量从MDN
关于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
,直到它们是de clared。你能在什么意义上“引用稍后声明的变量”?
“此变量在此范围语义中声明”被挂起; *作业不会移动*。没有提升(这会使它成为不同的语言:D),第二个例子会在日志语句中引用* outer *'myvar'。就像现在一样,它指的是*内部*'myvar',它*影响外部变量;该值在日志语句时未定义 - 提升不会影响分配。 – 2013-02-11 05:07:08
@pst好的。随着雾气最终升起,忍受着我......我可以问你,你的意思是“阴影”的外部变量吗? – 1252748 2013-02-11 05:13:06
“暂时覆盖” - 它可以防止看到/使用原始的[范围外变量]:D – 2013-02-11 06:09:08