今天学习中遇到了一个有意思的问题。
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呢?
我们先了解一下 == 和 ===
对其,百度的结果是 == 是指将其转换为同类型,看值相等部相等。 ===则不转换类型,类型不同就是不等。
还是知识不到家,默默吃个瓜@.@