JS中的数据类型以及如何检测

8 篇文章 0 订阅

JS中的数据类型

基本数据类型

  • number
  • 正数、负数、零、小数
  • NaN not a number,不是一个有效数字,但是属于number类型
  • Infinity:无穷大的值,也是number类型的
  • string
  • 在JS中用 单引号/双引号/反引号 包起来的都是字符串
  • boolean
  • true
  • false
  • null
  • undefined
  • symbol
  • 创建的值是唯一的
  • bigint

引用数据类型

  • 对象数据类型
    –{} 普通对象
    –[] 数组对象
    –/^?/ 正则对象
    – date 日期
    –math 数学函数
  • 函数对象类型 function

那么如何检测数据类型呢?

JS中的数据类型检测:

  • tyepof [value] 检测数据类型的运算符
  • [example] instanceof [class] 检测某一个实例是否属于这个类
  • [example].constructor===[class] 检测实例和类关系的,从而检测数据类型
  • Object.prototype.toString.call([value]) 检测数据类型
  • typeof的细节点:
  • typeof 检测的结果首先是一个字符串,字符串中包含了对应的数据类型(例如:“number”、“string”、“boolean”、“undefined”、“object”、“function”、“symbol”、“bigint”)
  • 特殊的检测结果:
  • NaN / Infinity 都是数字类型的,检测出来的结果是 “number”
  • typeof null 的结果是 “object”(这个是浏览器的BUG:所有的值在计算中都已二进制编码存储,浏览器中把前三位是000的当做对象,而null的二进制前三位就是000,所以被识别为对象,但是它不是对象,它是空对象指针,是基本类型值)
  • typeof 普通对象/数组对象/正则对象… 结果都是"object",这样就无法基于typeof区分是普通对象还是数组对象等了

搞两个题理解一下吧

console.log(typeof []); //=>"object"
console.log(typeof typeof typeof []); //=>"string" 由于typeof返回的结果永远是一个字符串(字符串中包含了对应的类型),所以连续出现两个及两个以上typeof检测的时候,最后结果都是 "string"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值