//实现add(1)(2)(3)(4)=10
function add() {
var args = [].slice.call(arguments); // 第一次执行时,定义一个数组专门用来存储所有的参数
var _add = function () { // 在内部声明一个函数,利用闭包的特性保存args并收集所有的参数值
args.push(...arguments);
return _add;
}
_add.toString = function () { // 利用toString隐式转换的特性,当最后执行时隐式转换,并计算最终的值返回
return args.reduce((a, b) => {
return a + b;
})
}
return _add
}
console.log(add(1)(2)(3)(4).toString())
01-11
294
03-31
398
05-27
3412
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交