undefined和not defined

182 阅读1分钟

看两段代码

(function f() {
    console.log(tmp)    // 报错:tmp is not defined
}())

(function f() {
    console.log(tmp)    //undefined
    if (false) {
        var tmp = 'test';
    }
}())

js中,undefined也是一个值,变量没被赋值前值为undefined。变量没声明调用会报错not defined。

在第二段代码中,tmp发生了变量提升,相当于先执行了var tmp;