柯里化

2020-11-23  本文已影响0人  bestCindy

什么是柯里化
把一个接收多个参数的函数,设计成一个 1、接收单一参数的函数 2、并返回一个能够接收剩余参数的新函数,最后返回结果

举个例子

普通函数:

const add = (a, b, c) => {
    return a + b +c;
}

柯里化函数:

const curry_add = (a) => {
    return (b) => {
        return (c) => {
            return a + b + c;
        }
    }
}

递归实现

const curry_add = (a) => {
    let num = a || 0;
    const item = (b) => {
        num += b;
        return item;
    };

    item.toString = () => num;

    return item;
}

console.log(curry_add(1)(2)(3).toString());

不定参数

const curry_add = (...a) => {
    let num = a.reduce((t, c) => t + c);

    const item = (...b) => {
        num += b.reduce((t, c) => t + c);
        return item;
    };

    item.toString = () => num;

    return item;
}

console.log(curry_add(1,2)(2, 3)(3, 4).toString());
上一篇 下一篇

猜你喜欢

热点阅读