javascript的變量聲明和函數聲明提升

感謝原文作者 看了你的文章 真的一下子就明白了 簡單明瞭 謝謝 原文地址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(){
    //……
};





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章