你调用函数结束之后,你可以单独写一个demo的
function test(){
for(var i = 0;i<10;i++){
var obj = i
}
console.log(obj)
}
test() // 9
function test2(){
for(var i = 0;i<10;i++){
let obj = i
}
console.log(obj)
}
test2() // Uncaught ReferenceError: obj is not defined
看看就知道了,for是一个特殊的函数体,这个你可以去了解一下。
然后回收机制的话,简单总结:
垃圾回收机制依赖引用计数,如果一个值的引用次数不为0,垃圾回收机制就不会释放这块内存。
但是现代浏览器有自己的一个自动回收机制,在内存充裕的情况下不会每次都处理内存回收,毕竟GC是一个有消耗处理。
具体可以看WeakSet/WeakMap数据结构例子,垃圾回收不考虑弱引用,但是其实还在内存中,并没有被回收掉。