筆記-js高程-第七章 函數表達式

函數聲明提高

定義函數有兩種方式:函數

  • 函數聲明
sayName("123");//123
function sayName(name){
    alert(name);
}
  • 函數表達式
sayName("123");//報錯,該函數不存在
var sayName = function(name){
    alert(name);
};

上述代碼出現不一樣的執行結果,是由於函數聲明的一個重要特徵:函數聲明提高,意思是函數聲明會被提高到頂部,即首先讀取函數聲明。
與之相似的還有變量聲明提高,即將變量的聲明提高到頂部。code

var sayName = function(){
    alert(1);
};
function sayName(){
    alert(2);
}
sayName();//?

上述代碼等價於:io

function sayName(){    //函數聲明提高
    alert(2);
}
var sayName;//變量聲明提高
sayName = sayName(){    //覆蓋函數聲明
    alert(1);
}
sayName();//1

注:函數聲明提高先於變量聲明提高,且不會被變量聲明提高所覆蓋。function

相關文章
相關標籤/搜索