Этот вопрос закрыт для ответов, так как повторяет вопрос Как f.toString здесь работает и расскажите, что происходит в этом коде?
@olya_097

Вопрос по js,ретурн.Что делает?

Всем привет,я понимаю,что ретурн возвращает значение,но можно более подробно про данную ситуацию,пожалуйста

зачем 2 раза возвращаем f?и еще:это для замыкания?

и вообще можете вкратце хотя бы объяснить,спасибо
function sum(a) {

  var currentSum = a;

  function f(b) {
    currentSum += b;
    return f;
  }

  f.toString = function() {
    return currentSum;
  };

  return f;
}

alert( sum(1)(2) ); // 3
alert( sum(5)(-1)(2) ); // 6
alert( sum(6)(-1)(-2)(-3) ); // 0
alert( sum(0)(1)(2)(3)(4)(5) ); // 15
  • Вопрос задан
  • 176 просмотров
Ответы на вопрос 1
@vantsymbalenko
как уже дали ответ выше return сделан для того что бы вызывать функцию бесконечное число раз.
то есть первый раз когда мы вызываем функциюsum() она возвращает нам функциюf которая в свою очередь может быть вызвана или выводить результат если больше не будет использоваться с помощью искуственно добавленого метода f.toString()Если же функция f будет вызвана то когда выполнение дойдет к currentSum += b; она не найдет в своем лексическом окружении currentSum и через[[Scope]] поищет выше то есть в функции sum, там найдет это значение и использует его. После этого вернет саму себя для того чтобы пользователь имел возможность использовать в очередной раз функцию f
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы