在这里我想说肯定不是一个bug~
在开始之前首先聊一下undefined,undefined不是一种类型,也不是一个值,没有结果,只是定义了,并开辟了一个空间,只是这个空间里面啥也没放
var a=3 a进行预解析同时也进行赋值
a=undefined 将栈中这个空间变量清空,变量空间是存在的
var obj={a:1}
obj={a:1} 这两个obj是不一样的,引用地址不同
obj={} 相当于 obj=new Object()
所以,obj现在的引用地址是第二个,第一个引用地址被抛弃在对中了,这样的对象多了就会造成内存泄漏
内存泄漏是指不断地引用新的对象,但是并没有清除掉不再引用的对象,造成这些对象在堆中成为孤儿对象
var obj={a:1}
var o=obj
obj=null 堆中的{a:1}认为,你设置了null,应该被清掉
o=null 此时堆中的对象{a:1}的引用列表中就会将obj,o全部干掉
综上所述, null的作用有两个,只限于对对象操作 1.清除栈中变量的引用关系 2.清除堆中该对象引用列表中该变量名