【发布时间】:2016-05-03 21:14:42
【问题描述】:
我知道所有变量都被提升了,但分配没有(不要介意这个问题的函数 - 这对我来说很有意义 - related SO)。
但我看不出这对代码有何影响。我写了一个小提琴来做实验。
如果你提升变量并赋予它 undefined 的值,这有什么好处。
var a = 1;
function foo (proxy){
print(proxy);
}
function print(out){
document.getElementById("out").innerHTML = out;
}
// foo("you")
print(d); // undefined
var d = 4;
print(d); // 4
【问题讨论】:
-
去掉
d之前的var,第一次调用print会抛出异常。 -
为什么这个问题被重新打开了?这是Why does JavaScript hoist variables?的明显复制品
-
@squint 对我来说,这似乎并不是一个完整的副本。为什么要提升它们与它如何影响代码是不同的问题。
-
@Paulpro:我认为他的意思一定是哲学上的,因为他知道
undefined的运行时效果。 -
@arc:我的看法,但我会说它不仅没有好处,而且实际上它不利于直观地理解正在发生的事情。链接的答案似乎解释了它是如何产生的,并且它只是解释器如何工作的副作用(这就是我将其标记为重复的原因)。
标签: javascript hoisting