1、条件判断下的变量提升:
EC(G)全局上下文中的变量提升, 条件中带 function 的在新版本浏览器中只会
提前声明,不会再提前赋值了;
【老版本】:
var a;
func = 函数;
【新版本】:
var a;
func;
if (!('a' in window)) {
var a = 1;
function func() {}
}
console.log(a); // undefined
fn(); // 5
function fn() {
console.log(1)
}
fn(); // 5
function fn() {
console.log(2)
}
fn(); // 5
var fn = function() {
console.log(3)
}
fn(); // 3
function fn() {
console.log(4)
}
fn(); // 3
function fn() {
console.log(5)
}
fn() // 3
var foo = 1
function bar() {
// 无论条件是否成立,变量都会提前声明
if (!foo) {
var foo = 10
}
console.log(foo) // 10
}
bar()
网友评论