for(var i =0;i<3;i++){
(function(j){
setTimeout(function(){
console.log(j)
},1000)
})(i)
}
对于这个闭包的例子,我没有明白闭包的含义,我是否可以这样理解:
var i=0时,由于出现了一个闭包,i这个变量开辟的内存,没有被释放掉,
所以,当i =1时,运行环境又重新为i 开辟了另外1块内存i=1 .
当i =2时,运行环境又重新为i 开辟了另外2块内存i=2
所以运行环境总共给i 开辟了3块内存,当console.log(2)执行完后,这3块内存才被释放掉。
经常听说闭包容易出现内存没被释放掉的信息,这个例子中不存在吧?
前端无门槛学习,从ES6到ES11,一套课程掌握JS最新语法
了解课程