Вернуться к уроку

Сумма через замыкание

важность: 4

Напишите функцию sum, которая работает так: sum(a)(b) = a+b.

Да, именно так, через двойные скобки (это не опечатка). Например:

sum(1)(2) = 3
sum(5)(-1) = 4

Чтобы вторые скобки в вызове работали – первые должны возвращать функцию.

Эта функция должна знать про a и уметь прибавлять a к b. Вот так:

function sum(a) {

  return function(b) {
    return a + b; // возьмет a из внешнего LexicalEnvironment
  };

}

alert( sum(1)(2) );
alert( sum(5)(-1) );