变量提升的意义是什么?
What is the significance of variable hoisting?
我知道所有变量都被提升但赋值没有提升(不要介意这个问题的函数 - 这对我来说很有意义 - related SO)。
但我看不出这对代码有何影响。我写了一个fiddle来实验
如果提升变量并赋予它 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
这是它影响输出的一种方式:
function outer ( ) {
var a = 'foo';
function inner ( ) {
console.log( a );
var a = 'bar';
}
inner();
};
没有提升 outer()
会输出 'foo'
,但因为局部 var a
声明被提升,它输出 undefined
。那个用处不大,但是说明能起到作用
写 JavaScript 时变量提升没有任何好处。通过在每个函数的开头声明所有变量(不分配给它们),它实现的任何事情都可以在没有它的情况下轻松完成。这只是一个实现细节。
我知道所有变量都被提升但赋值没有提升(不要介意这个问题的函数 - 这对我来说很有意义 - related SO)。
但我看不出这对代码有何影响。我写了一个fiddle来实验
如果提升变量并赋予它 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
这是它影响输出的一种方式:
function outer ( ) {
var a = 'foo';
function inner ( ) {
console.log( a );
var a = 'bar';
}
inner();
};
没有提升 outer()
会输出 'foo'
,但因为局部 var a
声明被提升,它输出 undefined
。那个用处不大,但是说明能起到作用
写 JavaScript 时变量提升没有任何好处。通过在每个函数的开头声明所有变量(不分配给它们),它实现的任何事情都可以在没有它的情况下轻松完成。这只是一个实现细节。