匿名函數

沒有名字的就叫作“匿名函數”,你可以認爲他們是一次性函數。當你只需要用一次某個函數式,他們就特別有用。通過使用匿名函數,沒有必要把函數一直放在內存中,所以使用匿名函數更加有效率。像這個

function(x,y){return x+y}

沒有名字當然不能直接調用,也無從直接調用;最多能只能把它賦值或閉包處理(閉包是什麼下面再講),如:

var sum =function(x,y){return x+y};

alert(sum(1,2));

這時候,與傳統寫法是等價的 function sum(x,y){return x+y}.這樣的寫法讓人感覺更OOP,因爲sum變量就包含了function...這個函數體;

還可以閉包的方式調用該函數:

(functioin(x,y){return x+y})(1,2) //返回值3

代碼很簡潔。注意括號的使用,形式爲(exp)()。這種用法可以稱作 閉包closure。
後面括號的是參數,把這些參數放進fn裏面立即計算,得出一個值 3。這實際上是一個表達式的運算。沒想到fn函數體也可以放進去參與運算^_^(Using function as an expression)!(基本功:表達式Expression,其含義是通過計算後,始終會返回一個值,無論這個表達式有多長)

fn還可以以參數形式傳遞(passing function as argument to other functions)

var main_fn = function(fn,x,y){return fn(x,y)}

var sum = function (x,y){
   return x+y;
}

alert(main_fn(sum,1,2)) // result:3

 

js匿名函數的執行

Javascript代碼 複製代碼
  1. (function(){}());  
(function(){}());

去掉最外層括號,瀏覽器將會報錯,加上就沒事,該怎麼解釋?
Javascript代碼 複製代碼
  1. (function(){})();  
(function(){})();

定義一個匿名函數並立即執行。
呵呵,一個富有想象力的寫法
Javascript代碼 複製代碼
  1. 1,function(){}();  

 

發佈了41 篇原創文章 · 獲贊 0 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章