Напишите функцию для сложения чисел, поддерживающую неограниченное количество вызовов
Чтобы вторые скобки в вызове работали – первые должны возвращать функцию.
Эта функция должна знать про a и уметь прибавлять a к b. Вот так:
'use strict';
function sum(a) {
return function(b) {
return a + b; // возьмет a из внешнего LexicalEnvironment
};
}
console.log( sum(1)(2) );
console.log( sum(5)(-1) );
function sum(a) {
var currentSum = a;
function f(b) {
currentSum += b;
return f;
}
f.toString = function() {
return currentSum;
};
return f;
}
console.log( sum(1)(2) ); // 3
console.log( sum(5)(-1)(2) ); // 6
console.log( sum(6)(-1)(-2)(-3) ); // 0
console.log( sum(0)(1)(2)(3)(4)(5) ); // 15