变量声明的提升特性:
var a = 10;
function fun(){
console.log(a); //a是fun里面的a
var a = 20; //提升了,提升了var没有提升值
}
fun(); //undefined
变量声明的提升无视if语句,因为是在函数的预解析阶段:
var a = true;
function fun(){
console.log(a); //undefined,因为var a提升是无条件的,无视if语句的真假性
if(!a){
var a = 10;
}
console.log(a); //10,因为if(! undefine)所以进入了if语句体,此时a被赋值为10。
}
fun();
var后面可以连续定义一些变量,用逗号隔开,定义的都是局部变量那个。
function fun(){
var a , b , c;
}
fun();
console.log(b); //undefined
函数生命头的提升,只有
function fun(){
}
能够提升
var fun = function(){}
不能提升