JS中undefined与null的有趣 关系

今天学习中遇到了一个有意思的问题。

var obj = undefined

 我们将一个对象设置为undefined

typeof(obj)
>>undefined

  结果是undefined,可是这个时候我灵光一现,想起null这个对象了

typeof(null)
>>object

  结果是object!

  本小姐手一抖,进行了二者等值比较,更奇怪的事情出现!

obj == undefined
>> true
obj == null
>> true
obj === undefined
>>true
obj === null
>>false

  我当时的表情是这样的:

  这不能放弃治疗啊,紧接着我又对null开始了等值比较

null == null 
>> true
null === null
>> true
null  == undefined
>> true
null === undefined
>>false

  这个时候我的表情已经是这样了:

  

  我要吃包辣条压压惊 -.-

  那么到底为什么null是个object,而undefined却是undefined呢?

  查了一下,原来null是一个不存在的对象的占位符,发明js大牛研究的时候打瞌睡了,是个小失误,但是后人一直就这么沿用下来,ECMAScript也就这么用了。

  可是又是为什么null == undefined, null!=== undefined呢?

      我们先了解一下  == 和 === 

  对其,百度的结果是 == 是指将其转换为同类型,看值相等部相等。 ===则不转换类型,类型不同就是不等。

  还是知识不到家,默默吃个瓜@.@

posted @ 2017-03-09 20:12  卡迪斯上小学  阅读(155)  评论(0编辑  收藏  举报