8、变量声明的提升

变量声明的提升特性:

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(){}

不能提升

猜你喜欢

转载自blog.csdn.net/sinat_36414515/article/details/81323530