不使用函数:
function add() {
let arg = Array.prototype.slice.call(arguments)
let _adder = function () {
arg.push(...arguments)
return _adder;
}
_adder.toString = function () {
return arg.reduce(function (a, b) {
return a + b
})
}
return _adder;
}
console.log((add(1)(2)(3)).toString())
执行结果:6
使用箭头函数:
function add() {
let arg = Array.prototype.slice.call(arguments)
let _adder = () => {
arg.push(...arguments)
return _adder;
}
_adder.toString = function () {
return arg.reduce(function (a, b) {
return a + b
})
}
return _adder;
}
console.log((add(1)(2)(3)).toString())
执行结果:3
打断点调试才发现:
let _adder = () => {
arg.push(...arguments)
return _adder;
}
箭头函数没有自己的arguments,查资料发现箭头函数没有自己的this,arguments,super或new.target。