1. 程式人生 > >JavaScript函式宣告與函式表示式的區別

JavaScript函式宣告與函式表示式的區別

函式宣告與函式表示式的區別

函式宣告與函式表示式定義函式看似相同,實際上在解析器向執行環境中載入資料時,解析器會率先讀取函式宣告,並使其在執行任何程式碼之前可用(可以訪問);至於函式表示式,則必須等到解析器執行到他所在的程式碼行,才會真正被解釋執行。

換句話說,就是通過函式宣告定義的函式,可以在任何位置呼叫(宣告前和聲明後);而通過函式表示式定義的函式,只能在表示式之後呼叫,之前呼叫會報錯(因為還沒被解析器執行)。

看下面例子:

// 正確執行
alert(sum(10, 10));	// 20
function sum(num1, num2){
	return num1 + num2;
}; // Uncaught TypeError: sum2 is not a function alert(sum2(10, 10)); var sum2 = function(num1, num2){ return num1 + num2; };