Как замыкание формируется для setTimeOut в следующем сценарии - PullRequest
0 голосов
/ 20 октября 2018

замыкание формируется, когда мы можем получить этот код, поэтому он не является сборщиком мусора.сказав, что

function outer(){
  var name = "ankit";
    function inner(){
         ...
    }
  return inner
}

Теперь, чтобы сформировать замыкание для вышеупомянутого сценария, мы должны сохранить ссылку на внутреннее, так что контекст выполнения этого конкретного исполнения внешнего не является сборщиком мусора, и у нас есть замыкание.

что-то вроде:

let closure = outer(); // name can be accessed 

Теперь я запутался в этом примере для setTimeout

for(var i=0;i<10;i++){
  timeer(i)
}
timer(i){
 setTimeOut((i) => {console.log(i)}, i*1000);
}

// printts 0 1 2 3 4 5 6 ...

Теперь, как работает вышеприведенный код, я понимаю, что неявное закрытие создано setTimeOut, но мы не храним ссылку на объявление setTimeOut, поэтому область выполнения таймера для конкретного i должна быть мусоромсобрали?Пожалуйста, помогите мне понять этот вариант использования.Среда javascript неявно хранит ссылку setTimeOut?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...