js数据类型如何检测
常见的数据类型
原始值
- String
- Number
- Boolean
- null
- undefined
- 其它
引用值
- Function
- Array
- Object
- RegExp
- 其它
类型检测
typeof
typeof 方法通常情况下可以帮助我们检测出基本的数据类型
但有的时候检测出来的结果却不是我们想要的,比如下面这些情况,只能告诉我们是对象类型,但不能明确的告诉我们属于那种对象(Array、Object、Date等)
这时候我没应该怎么办呢?没错使用 instanceof 来进行判断。具体如何使用等会再说,我们先来看这样一个问题
null 明明是原始类型的值,但为什么检测出来的结果却是 object 呢
首先来看这样一个问题,数据在计算机中都是以二进制的形式保存的,那么 js 是如何存储数据类型的
js 在底层存储变量的时候,会在变量的机器码的低位 1 - 3 位存储其类型信息,所以 typeof 方法也只会看前 1 - 3 位
- 浮点数:000
- 整数:1
- 字符串:100
- 布尔:110
- null:全为0
- undefined:−2^30 整数来表示
此时,就明白为什么 typeof null
的结果为什么为 object 了,因为前三位都是0,所以就会看成 object
instanceof
使用 instanceof 就可以帮助我们判断出具体的数据类型