Javascript中兩種方式定義函式的區別

jiestyle21發表於2011-09-30
// 方式1
function func1(x,y){
	// your code
}	
// 方式2
var func2 = function(x,y){
	// your code
}
方式1 是典型的函式宣告(Function declarations)。
方式2 是函式表示式(Function expressions),將一個匿名函式賦值給一個變數。或者說方式2中建立了一個具有形參為x,y的匿名函式,然後把該匿名函式賦值給變數func2。

其主要區別在於:
1, 函式宣告需顯示的指定函式名,這裡是func1;函式表示式則使用匿名函式
2, 方式1在程式碼執行之前(解釋期)被載入到作用域中,方式2則需在程式碼執行時(執行期)載入

一個簡單示例就明白了它們在使用上的區別
alert(func1); // --> func1原始碼
alert(func2); // --> undefined
// 方式1
function func1(x,y){
	// your code
}	
// 方式2
var func2 = function(x,y){
	// your code
}
可以看到,第一次彈出的是func1的原始碼,第二次卻是undefined。即採用方式1(函式宣告)定義函式,可以在該函式程式碼之上使用它,採用方式2(函式表示式)定義函式則不能在其定義前使用,只能在其定義後使用。


相關文章