关闭是在我们可以到达该代码时形成的,因此不会被垃圾收集。说了
function outer(){
var name = "ankit";
function inner(){
...
}
return inner
}
现在要为上述情况形成一个闭包,我们必须存储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);
}
//打印0 1 2 3 4 5 6 ...
现在上面的代码是如何工作的,我知道setTimeOut创建了一个隐式闭包,但是我们不存储setTimeOut声明的引用,因此应该对特定我的计时器执行的执行范围进行垃圾收集? 请帮助我理解此用例。 javascript环境是否隐式存储引用setTimeOut?