天天看點

function方法Javascript中函數定義方法比較

查了好多資料,發現還是不全,幹脆自己整理吧,至少保證在我的做法正确的,以免誤導讀者,也是給自己做個記錄吧!

    定義函數的方法重要包含3種:function 語句、函數直接量、Function()構造函數(代碼格式比較如下)

//應用function語句編織函數 
                      function f(x){
			 return x;
		 }
		 //應用函數直接量直接生成函數 
		 var f = function(x){
			 return x;
		 }
		 //應用Function()構造函數克隆函數 
		 var f = new Function("x","return x;");      

現在比較前兩種定義函數方法的差別:

    方法1 是典型的函數聲明

    方法2 是函數表達式

    每日一道理

天又快黑了,這座忙碌的城市又将入睡,讓這勞累的“身軀”暫别白日的辛勤,讓它入睡,陪伴着城市中的人們進入夢鄉。當空的彎月正深情地注視着這座城市與城市中的人們,看着家家戶戶的燈漸漸熄滅,它在床頭悄悄奏響“明月曲”……

    其重要差別在于:

    1、函數聲明需表現的指定函數名,這裡是f  函數表達式則應用匿名函數

    2、方法1在代碼執行之前(解釋器)被加載到作用域中,方法2則需在代碼執行時(運作期)加載

    下面一個例子說明他們的差別

alert(f1);      //f1源碼
		alert(f2);      //undefined
		
		function f1(){
			var i = 10;
		}
		var f2 = function(){
			var j = 10;
		}
		
		//如果放在函數聲明之後 
		alert(f1);          //f1源碼 
		alert(f2);          //f2源碼      

可以看到,第一次彈出的是f1源碼,第二次倒是undefined。即采取方法1定義函數,可以在該函數代碼之上應用它,采取方法2定義函數則不能在其定義前應用,隻能在其定義後應用。

繼續閱讀