lxinr/interview-question

2021/01/28 - null是对象吗?为什么

lxinr opened this issue · 0 comments

lxinr commented

null的概念

null是一种原始类型,且这种类型的唯一值只有null,当null作为值存在时,用于表示对象的值未设置,或者说把它当成一个还没有创建的对象

nullundefined的区别

一般情况而言,两者没有区别,在布尔运算中都会认为是Falsy,但在Ecma262标准中,两者的定义有着一些差别,标准定义中undefined作为值时,表示未给变量赋值时的原始值,而null在作为值时,表示的是有意缺少任何对象值的原始值,所以两者的区别可以认为是:

  • null表示是一个没有创建的对象,这也能在标准定义上勉强解释为什么typeof null == 'object'
  • undefined表示一个变量缺少了值,即未给变量赋值时的原始值