写在前面的话:
这个系列文章可能开始,有人会觉得很low,我是打算从H5先开始整理,最后到常见的前端框架、以及一些前端常见的算法、leetcode的一些算法解析,感兴趣的小伙伴可以持续关注,每天分享一个前端知识点,希望大家一起进步。
这篇文章主要给大家介绍一下JS最常见的两个数据类型null 和 undefined 的区别,以及typeof null 、typeof NaN的区别
从运行结果中我们能够清晰的看到 typeof null 的结果是Object、typeof NaN 是Number,
下面我们来探究一下他们的主要形成这样的主要原因:
首先是关于 typeof null 的一些解析:
在 JavaScript 第一个版本中,所有值都存储在 32 位的单元中,每个单元包含一个小的 类型标签(1-3 bits) 以及当前要存储值的真实数据。类型标签存储在每个单元的低位中,共有五种数据类型:
000: object - 当前存储的数据指向一个对象。
1: int - 当前存储的数据是一个 31 位的有符号整数。
010: double - 当前存储的数据指向一个双精度的浮点数。
100: string - 当前存储的数据指向一个字符串。
110: boolean - 当前存储的数据是布尔值。
null 的值是机器码 NULL 指针(null 指针的值全是 0),所以null和Object的类型标签一样,会被判定为Object。
其次是关于typeof NaN 的一些解析:
NaN 是用于指出数字类型中的错误情况,即数学运算没有成功,失败后返回的结果,他是数字的一种特殊情况,所以在使用typeof 判定的时候会返回Number