为什么typeof null是object?

最近在面试的时候遇到了一个好玩的问题,面试官问null是什么数据类型,我不假思索的回答null属于原始(基本)数据类型。接着面试官又问到,那为什么typeof null的结果是object。。。

说实话,我没有自己试过typeof null的结果,所以当时没有回答上来。按理说null属于原始(基本)数据类型,typeof的结果就是它本身才对,为什么是object呢?

后来我自己测试了一下typeof null的结果确实是object。。。???为啥呀,我深刻的记得null属于六大原始(基本)数据类型。
难道是我记错了?我又翻了一遍自己的笔记,确实没记错,那这又是为什么呢??

经过我查阅一些网上资料和相关书籍,才发现这是JS在设计之初留下的历史遗留问题。

在JS中进行数据底层存储的时候是用二进制存储的,这是一定的,而且它的前三位是代表存储的数据类型,而000是代表object类型也就是引用类型的数据。而null正好全是0,所以它巧妙的符合object类型的存储格式,所以在typeof检测的时候,它才会输出object

所以面试官问的这个问题属于JS诞生以来就存在的历史遗留BUG。

如果兄弟们后续在面试或者其它场合遇到这种问题,就按照我上边说的回答即可。

有任何问题欢迎交流功能。

QQ:505417246
微信:18331092918
微信公众号:Code程序人生
个人博客:https://Creator12333.github.io

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_46171043/article/details/118399276