函數式編程全都是關于如何把一個問題分解為一系列函數的。通常,函數會鏈在一起,互相嵌套, 來回傳遞,被視作頭等公民。
好處:
百度百科 函數式編程
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))
后期:
柯里化
函數組合