這篇文章主要介紹了JavaScript中匿名、命名函數的性能測試,簡單來講匿名即沒有名字的函數,它和命名函數相比性能如何呢,本文即是對它們性能的測試,需要的朋友可以參考下
			我們經常通過匿名函數(Anonymous function)來寫回調。
			簡單來講匿名即沒有名字的函數,一般都立即執行。但是它與命名函數(有名字的函數)的性能如何呢?
			我們可以比較一下,我們隨便找一臺可以執行Shell命令的計算機來使用大量函數調用看一看二者執行消耗時間:
			anonymous.js
			復制代碼代碼如下:
			
		var count = 100000000
		  , sum   = 0
		while (count--) (function() { sum++ })()
		執行一下	
		復制代碼代碼如下:
			
		$ time node anonymous.js
		real    0m1.456s
		user    0m0.015s
		sys     0m0.031s
			 
			再來看看命名函數
			named.js
			復制代碼代碼如下:
					var count = 100000000
		  , sum   = 0		
			 
					var cb = function() {
			  sum++
			}
					while (count--) cb()
	 		執行一下	
		復制代碼代碼如下:
			
		$ time node named.js
		real    0m0.575s
		user    0m0.000s
		sys     0m0.046s
		命名函數會快很多,為什么會這樣呢?其實不難解釋,匿名函數每次都需要重新解釋回調,但是命名函數只需要解釋一次,因此性能會有提升,但是測試發現這種提升是非常非常微小的,完全不必將非常順手的一個回調單獨寫成另外一個變量。	
		 
			另外命名函數還有兩種寫法:
			函數表達式
			復制代碼代碼如下:
			
		var func = function() {
		  console.log('a')
		}
		函數聲明			復制代碼代碼如下:
			
		function func() {
		  console.log('b')
		}
		其實這兩個一起用的話可能會有問題,如	
		復制代碼代碼如下:
			
		var func = function() {
		  console.log('a')
		}
		function func() {
		  console.log('b')
		}
		//輸出為: a
		因此目前多使用函數表達式的形式,但函數聲明的性能如何呢?	
		 
			named2.js
			復制代碼代碼如下:
					var count = 100000000
		  , sum   = 0		
			 
					function cb() {
			  sum++
			}
					while (count--) cb()
	 		執行一下,并比較二者			復制代碼代碼如下:
					$ time node named.js
		real    0m0.553s
		user    0m0.000s
		sys     0m0.015s		
			 
					$ time node named2.js
			real    0m0.529s
			user    0m0.000s
			sys     0m0.047s
	 		似乎函數聲明會稍微快一點點,不過快得也非常非常不明顯,個人還是建議函數聲明式寫法。	
		 
			PS: 此數據均在Windows7下使用git-base測試。