在前端中函數柯里化的妙用~
前言:
在使用它之前我們需要先了解什么是柯里化?
所謂的柯里化不過就是將多個固定的參數生成一個新動態的調用函數,這句話看起來有點繞!但是我們理解清楚后就不會有這種感覺~
在某些場景中我的執行函數是固定參數才會執行的,但是這些參數取數又不是一次性的時候你會怎么處理?
我們一個函數有七八個函數,但是我們的函數的某些參數屬于固定的,那么我們需要在每次調用的時候去多次傳入這些參數嗎?
顯然這是很冗余的做法!有的人可能會說我可以把固定的參數直接封裝起來,直接調用不就好了?
你雖然可用這么做,但是~,如果有多個地方你是不是需要多次去定義調用?
此時我們的柯里化就能很好的幫助你解決這個問題~
1.聲明柯里化函數
function curry(fn) { return function curried(...args) { if (args.length >= fn.length) { // 如果傳入的參數數量達到了原函數的參數數量,則直接調用原函數 return fn.apply(this, args); } else { // 否則返回一個新的函數,并等待接收更多的參數 return function(...moreArgs) { return curried.apply(this, args.concat(moreArgs)); } } }; }
2.實例加法調用柯里化
function add(x, y, z) {
return x + y + z;
}
const curriedAdd = curry(add);
console.log(curriedAdd(1)(2)(3)); // 6
// 亦或者我們需要前兩位參數是固定的?
const curriedAdd = curriedAdd(1)(2);
curriedAdd(3) // 6
curriedAdd(2) // 5
// ....多次調用

浙公網安備 33010602011771號