摘要:JavaScript-建立Curry函式
在呼叫涵式的時候,傳入的參數有時會一模一樣,那該怎麼保留這些重複的參數呢?就可以透過Curry來做優化
參考以下簡單程式碼
function sum(x, y, z) { return x + y + z; } sum(1, 2, 3); //6 sum(1, 2, 4); //7 sum(1, 2, 5); //8
以上為普通的加法運算,目前只有一個參數在做變動,那如果輸入參數有多個而變動參數只有一個,這樣的做法是不是就不太好了呢?
所以我們就可以透過建立Curry函式來做優化
function curry(fn) { var slice = [].slice; var curry_args = slice.call(arguments, 1);//curry's args return function () { var args = slice.call(arguments); // fun's args var new_args = curry_args.concat(args); return fn.apply(null, new_args); } }
var new_sum = curry(sum, 1, 2); new_sum(3); //6 new_sum(4); //7 new_sum(5); //8
這樣是不是有看起來有比較好呢?XD
但建立Curry函式還有一種更簡單的方法,就是bind
也是沿用上面的加法函式作範例
var new_sum = sum.bind(null, 1, 2); new_sum(3); //6 new_sum(4); //7 new_sum(5); //8
這樣是不是非常輕鬆容易呀~~~
如果以上有錯誤的地方歡迎指正唷~~~