Size: a a a

2019 December 01

W

WwW in JS
ну когда мы присваиваем
источник

V

Vermin in JS
В последнем примере с реализацией .bind автор поплыл
источник

V

Vermin in JS
Не объяснил, зачем нужно замыкание, написал кривой код со спредом
источник

V

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

TP

Taras Postolyuk in JS
Замыкание нужно чтобы переменные которые используются в функции не смогли переписываться из глобального окружения я правильно понимаю?
источник

V

Vermin in JS
Taras Postolyuk
Замыкание нужно чтобы переменные которые используются в функции не смогли переписываться из глобального окружения я правильно понимаю?
К локальным переменным получить доступ из внешнего окружения проблематично
источник

W

WwW in JS
Vermin
Если ты про лексечиское окружение, то да
про него. вот тогда такой вопрос.
1) глобальное окружение
2) переменная counter1 - тоже глобальное окружение для вызова makeCounter

это два отдельных вызова
makeCounter()();
makeCounter()();

здесь два вызова одной функции. т.е. счётчик будет прибавляться
let counter1 = makeCounter();
let counter2 = makeCounter();
counter1();
counter1();

а тут почему нет?
let counter1 = makeCounter()();
let counter2 = makeCounter()();
counter1;
counter1;

Если я правильно понимаю:
let counter1 = makeCounter()(); вызываем внутреннюю функцию, которая попадает в окруение counter1. Затем два раза делаем вызов, но счётчик не увеличивается
источник

T

Theo in JS
Потому что ты во втором случае ф-цию не вызываешь
источник

T

Theo in JS
Просто пишешь counter1
источник

V

Vermin in JS
Лол, я так как-то делал на коудварс кату какую-то, написал все, смотрю -- error: its not a function и указывает на reverse
источник

V

Vermin in JS
Думал минут цать в чем дело, оказалось что забыл вызвать)))
источник

W

WwW in JS
Theo
Потому что ты во втором случае ф-цию не вызываешь
так ведь counter1 == makeCounter()()
источник

W

WwW in JS
и counter1 работает ведь, просто показывает 0 постоянно
источник

V

Vermin in JS
WwW
так ведь counter1 == makeCounter()()
Во втором случае ты присваиваешь результат выполнения функций в переменную
источник

T

Theo in JS
А
источник

V

Vermin in JS
Ты не создаёшь замыкание
источник

T

Theo in JS
Там он сразу результат присвоил
источник

T

Theo in JS
Ну тогда с чего он меняться должен?
источник

T

Theo in JS
Функция выполнилась, counter1 - просто целочисленный литерал
источник

W

WwW in JS
Vermin
Во втором случае ты присваиваешь результат выполнения функций в переменную
а let counter1 = makeCounter() присваиваю результат выполнения только внешней функции да? тогда получается counter1() это по сути
function () {
return count++;
}()

?
источник