typeof null == object的来龙去脉

很多学习js的初学者都会一个问题,那就是typeof null的结果是object?这是为什么,容我慢慢道来

首先,解释这个问题要从js的发展史开始说起。篇幅比较长,我尽量的简短表述

1995年,[Brendan Eich][1]为了应付公司安排的任务,用了仅仅10天的时间,设计出来了javaScript。由于Brendan Eich本人对java一点兴趣都没有,加上设计周期又短,语言的一些细节考虑的也不周到。而且,最重要的是Brendan Eich只是为了解决当时的问题,而搞出来的解决方案,他也没有想到十数年之后,js会成为最流行的语言之一,当然这是后话。在这多方面的条件下,js诞生了。
他的设计思想有一条是这样的:**借鉴JAVA语言的数据类型和内存管理**。而java的数据类型是这样的:(1)判断是否是undefined (2)如果不是undefined,判断是否是object (3)如果不是object,判断是否是number (4)如果不是number,判断是否是string......
至此,null就出现了一个bug。至于java的内存管理,我不在此具体阐述。请感兴趣的猿友自行百度。
万物皆对象。js的创始者认为null是一个空指针对象,于是这个bug就产生。随着js的快速流行,很多人提议修复这个bug。但是,这个bug被无情被拒绝了,一直保留在今天。

[1]http://https://baike.baidu.com/item/Brendan%20Eich

猜你喜欢

转载自www.cnblogs.com/gaozhipeng/p/9048212.html