一个关于函数自定义属性的题目

55 阅读1分钟

写一个函数 sum,它有这样的功能:

sum(2)(5)(5)(5)(5)(5)===27

思考

  • 首先sum函数返回的是一个函数
  • 通过需要写一个toString方法,最后能输出值

上代码吧

const sum=function (val){
    function counter(val1) {
        counter.sum+=val1;
        return counter
    };
    counter.toString=()=>{
        return counter.sum
    }
    counter.sum=val
    return counter
}
alert(sum(2)(5)(5)(5)(5)(5));

ps:alert被调用时,如果值不是一个字符串,会隐式调用toString方法转换成字符串,我们把这个方法重写,就能得到值了