看两段代码
(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;
。