天天看點

add(1)(2)(3)累加

一般大家看到的 add(1)(2)(3) 這種,大家看到的大部分都是

function add(x) {
    var sum = x;
    var fn = function (y) {
        sum = sum + y;
        return fn;
    };
    
    // 一般 toString 和 valueOf 隻寫一個
    fn.toString = ()=>{
        return sum
    };
    fn.valueOf = ()=>{
        return sum
    };
    return fn;
}
console.log(add(1)(2)(3));  //6           

告訴你輸出 6,其實列印出來的是:[Function: fn] { toString: [Function], valueOf: [Function] }

這是就涉及到一個toString和valueOf的調用問題,這裡大家自行百度!

我告訴你怎麼列印出6

console.log(add(1)(2)(3)+'');  //6
console.log(+add(1)(2)(3));  //6
console.log(add(1)(2)(3).valueOf());  //6
console.log(add(1)(2)(3).toString());  //6           

至于為啥這樣就能列印!大家自行研究啊,哈哈哈

繼續閱讀