柯里化

寫一個(gè)函數(shù),達(dá)到以下效果

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

實(shí)現(xiàn)

// 方法一
    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
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容