您的位置:首页 > Web前端 > JavaScript

javascript的变量声明和函数声明提升

2016-08-11 11:47 666 查看
感谢原文作者 看了你的文章 真的一下子就明白了 简单明了 谢谢 原文地址http://blog.csdn.net/u012655237/article/details/51512029

要理解javascript的变量声明和函数声明的提升,重要的是理解浏览器引擎对javascript代码的处理过程:包括变量和函数在内的所有声明都会在任何代码被执行前首先被处理。如:

var a=2;

var b=5;

其处理过程是,先进行变量声明

 var a;

  var b;

再进行变量赋值

  a=2;

  b=5;

1.变量声明提升

例子1:

function test(){

    a=2;

    var a;

    console.log(a);   //2

}

其处理过程是:

function test(){

    var a;

    a=2;

    console.log(a); 

}

例子2:

function test(){

    console.log(a);     //undefined

    var a=2;

}

其处理过程是:

function test(){

    var a;

    console.log(a);   

    a=2;

}

2.函数声明提升

例子1:

函数声明的提升优先级大于变量声明的提升

foo();    //1

var foo;

function foo(){

    console.log(1);

}

foo=function(){

    console.log(2);

}

其处理过程:

function foo(){

    console.log(1);

}

var foo;  //并不执行,重复的声明

foo();    

foo=function(){

    console.log(2);

}

例子2:

函数表达式不会被提升

foo();             //TypeError

bar();            //ReferenceError

var foo=function bar(){

    //……

}

其处理过程是

var foo;

foo();

bar();

foo=function bar(){

    //……

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息