Size: a a a

JavaScript Noobs — сообщество новичков

2020 July 13

AP

Anton Permyakov in JavaScript Noobs — сообщество новичков
Алексей
function makeCounter() {
 let count = 0;

 return function() {
   return count++; // есть доступ к внешней переменной "count"
 };
}

let counter = makeCounter();

alert( counter() ); // 0
alert( counter() ); // 1
alert( counter() ); // 2
Почему counter увеличивается ?
count++
источник

AP

Anton Permyakov in JavaScript Noobs — сообщество новичков
пост-инкремент возвращает значение, а затем увеличивает его на 1
источник

А

Алексей in JavaScript Noobs — сообщество новичков
это понятно, но чуть выше count = 0, так почему при вызове функции увеличивается больше чем на 1
источник

AP

Anton Permyakov in JavaScript Noobs — сообщество новичков
Алексей
это понятно, но чуть выше count = 0, так почему при вызове функции увеличивается больше чем на 1
count = 0 отрабатывает только один раз, при вызове  counter() счетчик уже не обнуляется
источник

S

Sm•ok 😈✔️ in JavaScript Noobs — сообщество новичков
Алексей
это понятно, но чуть выше count = 0, так почему при вызове функции увеличивается больше чем на 1
count++ это как

count += 1
источник

А

Алексей in JavaScript Noobs — сообщество новичков
Anton Permyakov
count = 0 отрабатывает только один раз, при вызове  counter() счетчик уже не обнуляется
почему?
источник

S

Sm•ok 😈✔️ in JavaScript Noobs — сообщество новичков
count тоже меняется
источник

AT

Aleksei Tikhonov in JavaScript Noobs — сообщество новичков
Алексей
почему?
замыкание
источник

S

Sm•ok 😈✔️ in JavaScript Noobs — сообщество новичков
Алексей
почему?
Потому что ты вызываешь уже не функцию makeCounter
источник

S

Sm•ok 😈✔️ in JavaScript Noobs — сообщество новичков
А то, что вернул из нее
источник

AP

Anton Permyakov in JavaScript Noobs — сообщество новичков
Алексей
почему?
потому что ты вызываешь не makeCounter, а функцию, которую он вернул
источник

А

Алексей in JavaScript Noobs — сообщество новичков
переменная сохраняется в функции ?
источник

AT

Aleksei Tikhonov in JavaScript Noobs — сообщество новичков
Алексей
переменная сохраняется в функции ?
https://learn.javascript.ru/closure
прочесть и понять, и все будет ясно и просто
источник

А

Алексей in JavaScript Noobs — сообщество новичков
Aleksei Tikhonov
замыкание
я как раз тему читаю эту , не оч понятна ситуация
источник

А

Алексей in JavaScript Noobs — сообщество новичков
Sm•ok 😈✔️
Потому что ты вызываешь уже не функцию makeCounter
makeCounter только для первого раза нужна?
источник

AP

Anton Permyakov in JavaScript Noobs — сообщество новичков
Алексей
makeCounter только для первого раза нужна?
да
источник

AP

Anton Permyakov in JavaScript Noobs — сообщество новичков
если ты  вызовешь ее еще раз, получишь новый независимый счетчик
источник

S

Sarvar in JavaScript Noobs — сообщество новичков
Чекни видео Соракса про замыкания, старый ролик но еще актуально.
источник

А

Алексей in JavaScript Noobs — сообщество новичков
сейчас, спасиб
источник

AT

Aleksei Tikhonov in JavaScript Noobs — сообщество новичков
Алексей
я как раз тему читаю эту , не оч понятна ситуация
у тебя две функции, основная makeCOunter - со своей областью видимости и возвращаемая анонимная (вложенная) функция, при вызове анонимной вложенной функции переменная count для этой функции находится во внешней области видимости (лексическая область видимости) и "запоминается" при вызове, те. срабатывает замыкание, Переменная является внешней для вложенной анонимной функции, а вложенные функции имеют доступ к переменным объявленным во внешей области видимости
источник