js数据类型如何检测

常见的数据类型

原始值

  • String
  • Number
  • Boolean
  • null
  • undefined
  • 其它

引用值

  • Function
  • Array
  • Object
  • RegExp
  • 其它

类型检测

typeof

typeof 方法通常情况下可以帮助我们检测出基本的数据类型

js数据类型如何检测

但有的时候检测出来的结果却不是我们想要的,比如下面这些情况,只能告诉我们是对象类型,但不能明确的告诉我们属于那种对象(Array、Object、Date等)
js数据类型如何检测

这时候我没应该怎么办呢?没错使用 instanceof 来进行判断。具体如何使用等会再说,我们先来看这样一个问题

null 明明是原始类型的值,但为什么检测出来的结果却是 object 呢
js数据类型如何检测
首先来看这样一个问题,数据在计算机中都是以二进制的形式保存的,那么 js 是如何存储数据类型的

js 在底层存储变量的时候,会在变量的机器码的低位 1 - 3 位存储其类型信息,所以 typeof 方法也只会看前 1 - 3 位

  • 浮点数:000
  • 整数:1
  • 字符串:100
  • 布尔:110
  • null:全为0
  • undefined:−2^30 整数来表示

此时,就明白为什么 typeof null的结果为什么为 object 了,因为前三位都是0,所以就会看成 object

instanceof

使用 instanceof 就可以帮助我们判断出具体的数据类型
js数据类型如何检测