函數式編程

函數式編程全都是關于如何把一個問題分解為一系列函數的。通常,函數會鏈在一起,互相嵌套, 來回傳遞,被視作頭等公民。
好處:
百度百科 函數式編程

1.純函數

含義:相同的輸入,會得到相同的輸出


slice 不會改變數組
splice會改變數組

純函數和非純函數對比

純函數是對數學上的“函數”的真實演繹,就是輸入和輸出的關系。它們思路簡單也便于重用。 由于純函數是完全獨立的,它們更適合被一次又一次地使用。
參考http://www.jb51.net/article/73209.htm

2.高階函數

高階函數就是以其它函數為輸入,或者返回一個函數為輸出的函數。


例如
數組的map,reduce,forEach,filter,sort()

3.鏈式調用

常見例子
是jQuery直接返回this的方式,underscore的可選式的方式,和lodash惰性求值的方式。
最簡單方式

1)返回this

function B(num){this.value=num||0}
B.prototype.add=function(x){
    this.value+=x; 
    return this;}
B.prototype.redu=function(y){
    this.value-=y;
    return this;}
p=new B();

結果

參考http://www.cnblogs.com/tarol/p/5336666.html

3.匿名函數

把函數作為頭等對象的另一個好處是匿名函數。
就像名字暗示的那樣,匿名函數就是沒有名字的函數。實際不止這些。它允許了在現場定義臨時邏輯的能力。 通常這帶來的好處就是方便:如果一個函數只用一次,沒有必要給它浪費一個變量名。
匿名函數例子

Paste_Image.png

高階函數配合匿名函數

function powersof(x){
  return function(y){
    return Math.pow(x,y);
  }
}
var p=powersof(2);
console.log(p(1))
console.log(p(6))

后期:
柯里化
函數組合

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容