@avr1972

Что означает return function?

function makeCounter() {
  let count = 0;

  return function() {
    return count++; // есть доступ к внешней переменной "count"
  };
}

let counter = makeCounter();

alert( counter() ); // 0
alert( counter() ); // 1
alert( counter() ); // 2


Подскажите пожалуйста, что означает return function() ? Кажется вызвали функцию, она возвратила count++ и он запомнился в лексическом окружение. Но зачем еще функцию возвращать?
  • Вопрос задан
  • 182 просмотра
Решения вопроса 1
dollar
@dollar
Делай добро и бросай его в воду.
Дело в том, что функция в языке JavaScript - это объект, то есть она является значением. Её можно запихнуть в переменную. А потом эту переменную можно вызывать, как функцию.

Пример:
var f = function() { alert(123) }; //записали в переменную f целую функцию.
f(); //вызвали функцию в переменной.

Можно даже пойти дальше по этой логике. Ведь alert - это тоже функция.
var f = alert;
f(123);

В общем, надеюсь, логика понятна. Что касается вашего кода, то в нем из названия функции makeCounter очевидно, что она создаёт счетчик, то есть создает то, что умеет считать. То есть создает функцию. Вот и получается, что нужно вернуть функцию. Записать это можно по-разному, в том числе и в одну строчку, которая начинается с return function.

Ниже в строке:
let counter = makeCounter();
Мы как раз создаём эту функцию. То есть функция помещается в переменную counter. И чтобы это произошло, функция makeCounter должна вернуть функцию в качестве значения. Это и происходит.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
VladimirAndreev
@VladimirAndreev
php web dev
Чтобы потом её как функцию вызывать..
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы