1、函數(shù)式編程-高階函數(shù)。

高階函數(shù)。

在通常的語言中,函數(shù)的參數(shù)和返回值都只接受基本的數(shù)據(jù)類型,或是對象引用。

function foo(x){
   return x;
}

高階函數(shù)則是可以吧函數(shù)作為參數(shù),或是將函數(shù)作為返回的函數(shù)。

function foo(x){
   return function (){
      return x
   }
 }

后續(xù)傳遞風格的程序編寫將函數(shù)的業(yè)務重點從返回值轉移到了回調(diào)函數(shù)中:

function foo(x, bar){
  return bar(x);
}

以上面的foo方法傳入bar的參數(shù)不同,則可以得到不同的結果。

一個經(jīng)典的例子便是數(shù)組的sort()方法,他是一個貨真價實的高階函數(shù),可以接受一個方法作為參數(shù)參與運算排序。

var arr = [40, 100, 1, 5, 25 ,10];
arr.sort(function(a, b){
   return a - b;
});
//[100, 40, 25, 10, 5, 1]

高階函數(shù)具有很強的靈活性,結合Node提供的最基本的額事件模塊可以看到,事件的處理方式正是基于高階函數(shù)的特性來完成的。

var emitter = new events.EventEmitter();
emitter.on('event_foo', function(){ 
    //TODO
 }) 

在自定義事件實例中,通過為相同事件注冊不同的回調(diào)函數(shù),可以很靈活地處理業(yè)務邏輯。

高階函數(shù)在JavaScript中比比皆是,es5中提供的一些數(shù)組方法,map()、every()、some()、sort()、forEach() 、reduce()、filter()十分典型。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容