为什么这个JavaScript函数的输出是10?

时间:2014-04-27 14:43:17

标签: javascript

检查此fiddle或以下代码并告诉我为什么此脚本的输出 10

var foo = 1;
function bar() {
    if (!foo) {
        var foo = 10;
    }
    alert(foo);
}
bar();

1 个答案:

答案 0 :(得分:4)

因为函数中的var,将变量提升到顶部。好像您在函数顶部声明它,因此foo被视为当前作用域中的局部变量,全局作用域中的foo不受影响。您的代码与此相同:

var foo = 1;
function bar() {
    var foo;
    if (!foo) {
        foo = 10;
    }
    alert(foo);
}
bar();

正如您所看到的,foo在函数的顶部被声明为undefined,但重要的是在if语句中没有得到值。