@ince

Как понять, когда присваивается функция, а когда результат ее выполнения?

https://gist.github.com/CubiZm/63d56548271aca52d5e...

function numberGenerator() {
   
  var num = 1;
  function checkNumber() {
    console.log(num);
  }
  num++;
  return checkNumber;
}

var number = numberGenerator();
number(); // 2


Подскажите, вопрос по строчке 11.
var number = numberGenerator();

Переменной number неопределенного типа присваивается функция (?) numberGenerator.
Я пониманию, что присваивается именно функция, а не возвращаемый ею результат, поскольку в следующей строке переменная number уже вызывается как функция.

Но в то же время по строке 11 и по скобкам с параметрами var number = numberGenerator(); (в нашем случае без параметров) я понимаю, что эта функция именно вызывается, а значит и в переменную number должен быть записан результат ее выполнения. А для записи функции было бы логичнее использовать такую запись var number = numberGenerator;

Или я чего-то не понимаю? Как понять, когда присваивается функция, а когда результат ее выполнения?
  • Вопрос задан
  • 124 просмотра
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Нет. Переменной number присваивается результат работы функции numberGenerator. А возвращает эта функция как раз функцию checkNumber.
Ответ написан
Комментировать
zendor
@zendor
numberGenerator это функция обертка, которая возвращает внутренню функцию checkNumber, у которой замыкание на область видимости numberGenerator. В переменной number у вас ссылка на внутреннюю функцию checkNumber, которая была создана и возвращена в результате вызова numberGenerator.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
ulkoart
@ulkoart
numberGenerator - функция
numberGenerator() - результат
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы