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

Why is the output of this JavaScript function is 10?

本文关键字:输出 函数 JavaScript 为什么      更新时间:2023-09-26

检查这个fiddle或下面的代码,告诉我为什么这个脚本的输出是10

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

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

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

正如您所看到的,foo是在函数的顶部声明的,是undefined,但重要的是,直到if语句内部才获得值。