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 就可以帮助我们判断出具体的数据类型
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值