Size: a a a

2019 November 29

VL

Vladimir Luvolunov in JS
WwW
Привет. Подскажите пожалуйста, почему вызов функции работает при помещении в переменную work, а при вызове её по её же имени не работает? И почему тогда в случае, когда внутри функции return возвращает не функцию, а что либо другое, то вызов работает как раз по имени функции и без помещения её в переменную?


'''function makeWorker() {
   
   let name = "Pete";
   return function() {
       
       alert(name);
   };
}
let name = "John";  
let work = makeWorker();
work(); //работает
makeWorker(); //не работает'''
Так ты передал результат, а не ссылку
источник

VL

Vladimir Luvolunov in JS
Убери скобки и всо заработает
источник

VL

Vladimir Luvolunov in JS
Стоп
источник

В

Виталий in JS
лупинок
источник

VL

Vladimir Luvolunov in JS
Не так
источник

VL

Vladimir Luvolunov in JS
Поторопился
источник

VL

Vladimir Luvolunov in JS
WwW
Привет. Подскажите пожалуйста, почему вызов функции работает при помещении в переменную work, а при вызове её по её же имени не работает? И почему тогда в случае, когда внутри функции return возвращает не функцию, а что либо другое, то вызов работает как раз по имени функции и без помещения её в переменную?


'''function makeWorker() {
   
   let name = "Pete";
   return function() {
       
       alert(name);
   };
}
let name = "John";  
let work = makeWorker();
work(); //работает
makeWorker(); //не работает'''
Сделай
makeWorker()()
источник

VL

Vladimir Luvolunov in JS
На функцию не посмотрел да и сообщение не дочитал...
источник

W

WwW in JS
Vladimir Luvolunov
Сделай
makeWorker()()
Это я знаю, что так работает. Я хочу понять, почему не работает вызов функции как обычно без всяких дополнений. Т.е. помещаем в переменную - работает, не помещаем - не работает. Логику процесса как бы почему так? Ведь если return name например сделать внутри функции или что угодно вместо return function, то вызов будет работать как обычно без передачи в переменную до этого.
источник

VL

Vladimir Luvolunov in JS
Так ты вернул функцию
источник

VL

Vladimir Luvolunov in JS
Точнее ссылку на неё
источник

VL

Vladimir Luvolunov in JS
Просто напиши
work
источник

VL

Vladimir Luvolunov in JS
Функция не отработает
источник

VL

Vladimir Luvolunov in JS
Потому что просто ссылка, без исполнения
источник

W

WwW in JS
Похоже надо тему функции ещё раз изучить.
источник

МБ

Максим Баранов... in JS
WwW
Похоже надо тему функции ещё раз изучить.
ага, это называется замыкания)
источник

W

WwW in JS
Максим Баранов
ага, это называется замыкания)
Я в целом тему вроде как понимаю. Меня единственное этот момент в ступор вводит
источник

МБ

Максим Баранов... in JS
это необходимо, чтобы функция запоминала нужные ей данные из лексического окружения
источник

МБ

Максим Баранов... in JS
чтобы параметры не передавать каждый раз в саму функцию
источник

D

Dmitriy in JS
Ну и для инкапсуляции
источник