Страницы

Поиск по вопросам

суббота, 21 декабря 2019 г.

Замыкание в JS. Объясните 2 момента

#javascript #замыкания


Здравствуйте!
Разбираю тему замыкания в JS и не могу понять двух моментов в коде с MDN по теме.
Объясните пожалуйста (вопросы после кода).

function makeFunc() {
  var name = "Mozilla";
  function displayName() {
    alert(name);
  }
  return displayName; // (1 Вопрос)
};

var myFunc = makeFunc(); // (2 Вопрос)
myFunc();



Функция возвращается без скобок. Что именно будет возвращено?
Зачем функцию makeFunc() сохранять в переменную myFunc, ведь можно вызвать makeFunk()
напрямую? Для того чтобы "обернуть" замыкание (displayName + ее окружение)?

    


Ответы

Ответ 1



Функция возвращается без скобок. Что именно будет возвращено? Как ни странно, будет возвращена именно эта функция. Зачем функцию makeFunc() сохранять в переменную myFunc, ведь можно вызвать makeFunk() напрямую? Для того чтобы "обернуть" замыкание (displayName + ее окружение)? из пункта выше следует, что makeFunc() возвращает новую функцию, которая и сохраняется в переменную, для последующего вызова. Действительно, можно не сохранять результат и вызвать его сразу makeFunc()(); Но для наглядности результат первого вызова был вынесен отдельно.

Комментариев нет:

Отправить комментарий