变量提升 Hoisting
变量和函数的声明会在编译时被提升到作用域的顶部
提升的是声明,函数会连带函数体提升
var a = 2;
var a;
console.log(a); // 2
function foo(){
console.log(1);
}
var foo;
foo(); // 1
foo(); // 1
function foo(){
console.log(1);
}
var foo = 2;
foo(); // 2
var foo = 1;
function foo(){
console.log(1);
}
function foo(){
console.log(2)
}
if中的声明也会被提升,函数会被提升为undefined
console.log(foo, a); // undefined undefined
if(true){
var a = 1;
function foo(){
console.log(1)
}
}else{
var b = 2;
function foo(){
console.log(2)
}
}
- 参考
网友评论