变量提升

只提升声明,不提升赋值。所以其实应该叫变量声明提升。

而且,非常奇葩的是,即使是声明与赋值同时写,也会拆开进行提升……

var tmp = new Date();
function f() {
console.log(tmp);
if (false) {
var tmp = "hello world";
}
}
f(); // undefined 

这段代码首先扫描有没有var变量,有就拆开声明提升到上面去……尽管实际上不可能进入false语句,但是首先会扫描

猜你喜欢

转载自blog.csdn.net/nimeghbia/article/details/80474822
今日推荐