Size: a a a

2019 November 29

W

WwW in JS
Смотрите. "Вызов функции фактически выполняет указанные действия с указанными параметрами." Т.е. вызов функции происходит при добавлении скобок если по-простому. Например name() - это вызов. При вызове выполняется весь код внутри функции и результат мы можем увидеть в консоль лог, алерт и документ Райт например. Верно?
источник

ВР

Ваня Реутенко... in JS
функцию можно вызвать без скобок
источник

W

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


'''function makeWorker() {
   
   let name = "Pete";
   return function() {
       
       alert(name);
   };
}
let name = "John";  
let work = makeWorker();
work(); //работает
makeWorker(); //не работает'''
Функции, называется makeWorker. Я её вызываю - makeWorker(). Она конечно выполняется, но алерт не появляется. Но стоит в return записать алерт и точно так де вызвать эту функцию, как всё сработает. Т.е. почему вызов функции не выполняет код внутри вложенный функции? Но если присвоить переменной вызов функции, то всё сработает
источник

W

WwW in JS
Т.е. чтобы увидеть алерт мне нужно вызвать её так: makeWorker()();
Почему тогда при присваивании переменной достаточно makeWorker(), а не makeWorker()()
источник

ВР

Ваня Реутенко... in JS
WwW
Т.е. чтобы увидеть алерт мне нужно вызвать её так: makeWorker()();
Почему тогда при присваивании переменной достаточно makeWorker(), а не makeWorker()()
Да потому что ты так написал функцию....
ты говоришь давай выполняй функцию, а в конце верни другую
источник

К

Кирилл in JS
WwW
Т.е. чтобы увидеть алерт мне нужно вызвать её так: makeWorker()();
Почему тогда при присваивании переменной достаточно makeWorker(), а не makeWorker()()
Ты в work присваиваешь результат выполнения makeWorker, то есть функцию, а work(), ты уже вызываешь эту функцию, эт замыкание
источник

К

Кирилл in JS
С первого раза не дойдёт)
источник

W

WwW in JS
Короче я кажется понял))) потому что в переменную work помещается makeWorker(), а при вызове work() это тоже самое что makeWork()(). Ну т.е. для вызова каждой функции нужно делать вызов. Типа код внешней функции сам по себе не вызовет внутренние. Короче в work мы передаём одни скобки, а потом при вызове записываем вторые. Если в work передать makeWorker()(), то для вызова можно будет написать просто work
источник

W

WwW in JS
В общем это тема замыканий всё таки, да? Капец просто
источник

W

WwW in JS
Кирилл
Ты в work присваиваешь результат выполнения makeWorker, то есть функцию, а work(), ты уже вызываешь эту функцию, эт замыкание
Так вот в том и дело. Зачем мне присваивать, если я без этого вызвать хочу?
источник

К

Кирилл in JS
WwW
Так вот в том и дело. Зачем мне присваивать, если я без этого вызвать хочу?
Тогда ()()
источник

W

WwW in JS
Кирилл
Тогда ()()
Так хорошо. А теперь уберём из функции return function и сделаем просто return name. Теперь () или ()()?
источник

ВР

Ваня Реутенко... in JS
WwW
Так хорошо. А теперь уберём из функции return function и сделаем просто return name. Теперь () или ()()?
источник

К

Кирилл in JS
Ну ты вторыми скобками вызываешь внутреннюю функцию
источник

К

Кирилл in JS
Которую вернут первые скобки)
источник

W

WwW in JS
Кирилл
Ну ты вторыми скобками вызываешь внутреннюю функцию
Вот! Т.е. для каждой функции нужны свои скобки и внешняя сама не может вызвать внутреннюю, да? Я ещё с рекурсией чуть путаю видимо
источник

К

Кирилл in JS
WwW
Вот! Т.е. для каждой функции нужны свои скобки и внешняя сама не может вызвать внутреннюю, да? Я ещё с рекурсией чуть путаю видимо
Тип того
источник

W

WwW in JS
Это я понял))) я понимаю как тот код работает кроме вот момента вызова. Типа когда return name, то (), а когда return function, то нужно уже ()()
источник

W

WwW in JS
Всем спасибо огромное!!! Я третий день голову ломаю! Ещё раз пройдусь по замыканию
источник

К

Кирилл in JS
После первого () у тебя срабатывает выполнение функции, и возвращается функция, и чтобы её вызвать уже ты используешь вторые скобки ()
источник