变量吊装有什么意义?

时间:2016-05-03 21:14:42

标签: javascript hoisting

我知道所有变量都是悬挂的但是分配不是(从不介意这个问题的功能 - 这对我来说很有意义 - related SO)。

但我不知道这会如何影响代码。我写了一个小提琴来试验。

如果你提升变量并给它显示未定义的值,有什么好处。

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

https://jsfiddle.net/6ue7052k/1/

1 个答案:

答案 0 :(得分:2)

这是影响输出的一种方式:

function outer ( ) {

    var a = 'foo';

    function inner ( ) {
        console.log( a );
        var a = 'bar';
    }

    inner();

};

不提升outer()会输出'foo',但由于本地var a声明已提升,因此会输出undefined。这不是很有用,但它表明它可以起作用。

编写JavaScript时,变量提升没有任何好处。通过在每个函数的开头声明所有变量(不指定它们),可以在没有它的情况下轻松完成它所实现的任何事情。它只是一个实现细节。