1.
假设存在一个object
var a = {};
a.b = {a:1};
这个时候如果
a = null;
那么b.a是否被释放了
理论上 a.b 因为a为null 应该会被释放
那么 b.a 也会因为 a.b 被释放所以被释放。。
主要是没有办法确认 所以想问问大家的想法 或者是 验证一下
你a=null并不一定能释放a的对象..
更不用说后面 理论上 a.b 因为a为null 应该会被释放 这个完全是很奇怪的推论..哪有这个理论.
很感谢前辈提出的错误,我仔细思考了一下后觉得
可能是我的形容有点问题 或者 理解上出现了错误
我大概整理了一下思路 复述一下我个人的回收理解 大概如下
javascript的回收机制 当内存目标没有被使用 也就是指向为空的时候 都会被回收GC释放, (我的理解)
所以 我掐断了这个对象唯一的变量指针 然后 因为没有被引用了 无法从内存里找到这个被使用的对象空间 应该就会被下一次的游览器回收自动回收掉, 所以我判断 a=null之后 {b:{a:1}}这个对象就会因为没有变量可以找到他 所以 会被回收掉(也就是我理解的引用0会被回收的意思)
如若错误 还请更正, 也是对我的一种鞭策和助力,对学习是没有坏处的。感谢前辈的教诲。
虽然依旧没有得到答案 但是 还是谢谢老师的解释了
我是真的很想搞懂这一方面 总觉得 这里虽然已经默认了 但是我找不到方法来验证这个问题 总觉得 这成了我一个知识盲区了 还是个天天能遇到的 浑身不自在
– blurs 6年前