欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JS检测数据类型之typeof

程序员文章站 2024-01-30 10:59:28
...

在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在控制台的检测结果截图

JS检测数据类型之typeof

相关标签: JS知识点