typeof null是object到底是不是bug?

77 阅读1分钟

在这里我想说肯定不是一个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.清除堆中该对象引用列表中该变量名