您好,欢迎来到二三娱乐。
搜索
您的当前位置:首页柯里化

柯里化

来源:二三娱乐

写一个函数,达到以下效果

sum(1,2,3,4,5).valueOf()     // 15
sum(1,2,3,4)(5).valueOf()    //  15
sum(1,2)(3)(4)(5).valueOf()  // 15
sum(1,2)(3,4)(5).valueOf()   //  15

实现

// 方法一
    const add = (...args) => {
        const ArgArr = [...args]
        let result = 0
        if (ArgArr.length === 1) {
            result = ArgArr[0]
        } else {
            result = ArgArr.reduce((val, currentVal) => val + currentVal)
        }
        return result
    }
    const sum = (...args) => {
        let sum = add(...args)
        let tmp = (...args) => {
            sum = sum + add(...args);
            return tmp
        };
        tmp.valueOf = () => {
            return sum
        }
        return tmp
    }
// 方法二
    const sum = (...a) => {
        let helper = (...b)=> sum(...a,...b)
        helper.valueOf=()=>a.reduce((acc,num)=>acc+num)
        return helper
    }

Copyright © 2019- yule263.com 版权所有 湘ICP备2023023988号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务