function sum(...args) {
function inner(...more) {
return sum(...args,...more);
}
let total = args.reduce((a, b) => a+b, 0);
inner.toString = () => total;
return inner;
}
console.log(sum(1)(2)(2)(3)) // 8
console.log(sum(1,2)(2,3)) //8console.log не вызывает неявного приведения к строке, а потому в консоли мы увидим не 8, а то что там и есть на самом деле, т.е. function inner() {}toString же неявно вызывается именно в случае использования объекта как строки. console.log(sum(1)(2)(2)(3) + 'px') // 8px.