Задать вопрос

Как правильней использовать замыкание?

1) Существует ли принципиальная разница, как это использовать:
Вариант 1:
let bbb = (function () {
  start = function() {
    console.log('222');
  };
})();
start();

Вариант 2:
(function() {
  let c = 0;
  window.test = function() {c++;console.log(c);}
})();
test();


2) Если в функции использую addEventListener, то при bbb = null произойдет ли сброс прослушивания события?
  • Вопрос задан
  • 175 просмотров
Подписаться 1 Простой 3 комментария
Пригласить эксперта
Ответы на вопрос 2
kocherman
@kocherman
Правильно использовать замыкание так:
const test = ()=>{};
test();

или вот так:
function init(...params){
  /*init vars*/
  return ()=>{ /* start code */ }
}
let operation = init(1,2,3,true);
/* ... */
operation(); // exec start code

Смотря какую цель вы преследуете
Ответ написан
@Nc_Soft
Это не замыкание
let bbb = (function () {
  start = function() {
    console.log('222');
  };
})();
start();

Это замыкание
function bbb() {
  function start() {
    console.log('222');
  }
  return start;
}
const closure = bbb();
closure();

Подробнее расписано в этой книге, очень рекомендую (pdf при желании можно найти)
https://www.litres.ru/kayl-simpson/vy-ne-znaete-js...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы