垃圾回收机制的理解

在js里当变量进入环境会被打上“进入环境”的标记,变量离开环境会被打上“离开环境"的标记。

垃圾回收器定期执行,假如说:第一遍执行,垃圾回收器给所有变量打上标记,然后再把”进入环境“的变量和被”进入环境“的变量使用的变量(比如说,a = b,a,b都不能被回收)

这里我有点不理解:什么算是进入环境,什么算是离开环境。

后来我看到后面的一章,我觉得,所谓”进入环境“的变量就是值不为null,不为空的变量。垃圾回收器会回收它们的内存,当然如果定义的时候赋为null或每赋值,就不算”进入环境“,也就没有内存。对于闭包,我觉得 变量【a】进入了【函数fn】,进的不是变量,js里函数传的是值,所以只是把值复制给函数,当【a】所在的函数执行完毕后,变量【a】照样会被销毁。

就好像 var 出来的变量不赋值,它就是个没有灵魂的变量,它在世上是不能被存在的【没有内存】,如果它赋了值,就有了灵魂,需要一个肉体做载体【有了内存】,就是出生了,存在于世上【进入环境】,而当它没了灵魂【变量设为null】,肉体会腐蚀消失掉【离开环境,内存回收】。

posted @ 2018-08-07 15:47  蜜蜂老牛黄瓜  阅读(259)  评论(0)    收藏  举报