var foo=1; function bar(){ if(!foo){ var foo=10;} console.log(foo); }bar() 最后结果为什么是10 呢?

2024-12-01 09:19:46
推荐回答(1个)
回答1:

var foo=1;

function bar() {
    //javascript没有块级作用域, 在一个函数内任何地方声明的var都会被提到函数的最开头
    //相当于这里有一个 var foo;
    console.log(foo); //undefined, 因为函数内的var foo把外头的给覆盖了
    if (!foo) {
        var foo = 10; //相当于foo = 10; var foo的声明被提到最前
    }
    console.log(foo);
}

bar();