JS變量聲明提升和函數聲明提升

聲明提升: JavaScript函數裏的所有聲明(只是聲明,但不涉及賦值)都被提前到其當前作用環境的頂部,而變量賦值操作留在原來的位置。函數提升優先級比變量提升要高,且不會被變量聲明覆蓋,但是會被變量賦值覆蓋。

    function fun(){ console.log ("函數");}

    var fun;

    console.log("第一個:" + fun); 輸出:function a(){}   
    fun = "變量";
    console.log("第二個:" + fun); 輸出“變量”;
例子:(1)函數表達式的聲明提升
var getName = function(){
    console.log(2);
}
function getName (){
    console.log(1);
}
getName();
提升後:
function getName(){    //函數聲明提升到頂部
    console.log(1);
}
var getName;    //變量聲明提升
getName = function(){
                       //變量賦值依然保留在原來的位置  
                      console.log(2);
                    }
getName();    // 最終輸出:2
例子(2)函數聲明提升
f('hanshu');
function f(name){
    console.log(name);
}
提升後:
function f(name){
    console.log(name);
}
f('hanshu');







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