天天看点

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           

至于为啥这样就能打印!大家自行研究啊,哈哈哈

继续阅读