Size: a a a

2019 December 01

МБ

Максим Баранов... in JS
()()
источник

МБ

Максим Баранов... in JS
сначлаа первую
она возвращает другую
и ты вызываешь ее
источник

МБ

Максим Баранов... in JS
два раза НЕЗАВИСИМО
источник

МБ

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

МБ

Максим Баранов... in JS
потому что она сохранена в переменную
источник

W

WwW in JS
Максим Баранов
в первых алертах вутрення функиця запоминает лексическое окружение
Хорошо, как вызвать внутреннюю функцию без дополнительных переменных? Вот смотри я создал функцию которая считает квадрат числа. Называется функция например просто name. Я её вызываю: name. Мне не надо:
let x = name();
x();
Чтобы её вызвать. Мне достаточно просто name();. Тут функция makeCounter.
источник

МБ

Максим Баранов... in JS
потому что name
источник

МБ

Максим Баранов... in JS
у тебя возвращает како-то значение
источник

МБ

Максим Баранов... in JS
а в примере выше
у тебя функция возвращает другую функцию
источник

МБ

Максим Баранов... in JS
резальтатом makeCounter()
будет другая функция
источник

МБ

Максим Баранов... in JS
которую тоже нужно вызывать
источник

МБ

Максим Баранов... in JS
чтобы получить то, что ты хочешь
источник

W

WwW in JS
я думал, что в примере counter1() и makeCounter()() это одно и то же будет в итоге, но оказалось нет. Я до этого пытался понять другой момент, но возможно и там понял не правильно. Какая гадкая тема😭😭😭
источник

МБ

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

W

WwW in JS
Где можно подробнее почитать про неё? Кроме learns js и mdn. Там я не нашёл ответы
источник

МБ

Максим Баранов... in JS
когда будешь глубже в язык погружаться
источник

МБ

Максим Баранов... in JS
источник

W

WwW in JS
Спасибо
источник

ВР

Ваня Реутенко... in JS
WwW
Всем привет. Подскажите пожалуйста. Почему последнии два алерта выводят два раза 0 вместо 0, а затем 1? Почему при присваивании вызова функции в переменную результат при каждом вызове увеличивается на 1, а при обычном вызове функции нет? Т.е. куда записывается  результат в первых 3х алертах и почему такое не происходит в последних двух?

function makeCounter() {
   
   let count = 0;
   return function() {
       
       return count++;
   };
}
let counter1 = makeCounter();
let counter2 = makeCounter();
alert( counter1() ); // 0
alert( counter1() ); // 1
alert( counter2() ); // 0 (независимо)
alert(makeCounter()());
alert(makeCounter()());
источник

W

WwW in JS
а правильно ли я понимаю, что counter1 является как бы глобальным окружением для вызова makeCounter() ?
источник