Показать сообщение отдельно
Старый 03.07.2019, 12:40   #4
EvilOkta
Знающий
 
Аватар для EvilOkta
 
Регистрация: 31.07.2008
Сообщений: 313
Написано 107 полезных сообщений
(для 228 пользователей)
Ответ: JS Замыкания vs глобальные переменные vs сборщик мусора (тупой вопрос))

Да, вопрос идеологический, но пример кода приведу. Из урока на хабре
function createCounter() {
   var 
numberOfCalls 0;
   return function() {
      return ++
numberOfCalls;
   }
}
var 
fn createCounter();
fn(); //1
fn(); //2
fn(); //3 
Код который с помощью замыканий вертит каунтером.

Я хоть убейте не могу понять почему не проще завести глобал каунтер и увеличивать его в функции, вместо такой конструкции и самое главное - как я понял замыкание образуется за счет постоянного наличия локальной переменной (в данном коде numberOfCalls ) то в лексическом контексте, то в контексте выполнения, но в таком случае переменная, которая находится в замыкании никогда не будет удалена сборщиком (или нет? не нашел ответа нигде).
Идеологически мне не понятен смысл применения замыканий. Если как говорит Randomize - для контекстного деления кода на блоки, и по сути "эмуляции" private переменных так? Или это все словоблудие?
В каких случаях замыкания применять полезнее чем другие способы?
__________________
Области Хаоса - мой новый Youtube проект
(Offline)
 
Ответить с цитированием