JS检测数据类型之typeof

在JS中有很多的数据类型,比如:基本数据类型:number、string、Boolean、null、undefined、symbol、BigInt,引用数据类型:普通对象、数组、正则、日期、Math、函数等等。那么如果我们想检测那个值得数据类型应该使用什么方法呢?

1.常用的检测数据类型的方法

  • typeof [value] 检测数据类型的运算符
  • [example] instanceof [class] 检测某一个实例是否属于这个类
  • [example]. constructor === [class] 检测实例和类关系的,从而检测数据类型
  • Object . prototype . toString . call([value]) 检测数据类型

2.typeof [value]

  • 1> 语法:typeof 要检测的值
    • 如:typeof 1
  • 2> 返回结果:是字符串,字符串中包含了对应的数据类型
    • number === ‘number’
    • string === ‘string’
    • boolean ===‘boolean’
    • null ==='null’
    • undefined ===‘undefined’
    • symbol ===‘symbol’
    • BigInt ===‘bigint’
    • 普通对象、数组、正则… ===‘object’
    • 函数 ===‘function’
  • 3> 因为typeof的检测结果返回的是字符串类型的,那么当有两个或者两个以上typeof 时,结果为’string’
    • typeof 1 ==‘number’
    • typeof typeof 1 == typeof ‘number’ —>‘string’

3.typeof 中特殊的检测结果

  • NaN / Infinity 都是数字类型,检测出来的结果是’number’
  • typeof null 的结果是 ‘object’ (这个是浏览器的BUG:所有的值在计算机中都以二进制编码存储,浏览器把前三位是000的当做对象,而null的二进制前三位就是000。所以被识别为对象,但是它不是对象,它是空对象指针,是基本数据类型)
  • typeof 普通对象/数组对象/正则…结果都是’object’ ,这样就无法基于typeof区分是普通对象还是数组对象等

4.实战应用

在平时项目中,如果我们想要判断传进来的变量是不是对象类型的,那么应该怎么写判断条件

if(typeof x =='object '){...}
//注意这样写是不对的,因为null的检测结果也为'object'

正确写法

if(x!=null && typeof x == 'object'){...}

5.各类型使用typeof在控制台的检测结果截图

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值