Js中的数据类型检测

一.JS中的数据类型检测(4种方式)

        + typeof[value] 检测数据类型的运算符

        + [example] instanceof [class] 检测某一个实例是否属于这个类

        + [example].construct===[class] 检测实例和类关系的,从而检测数据类型

        + Object.prototype.toString.call([value]) 检测数据类型

二.typeof的细节点:

1. typeof 检测的结果首先是一个字符串,字符串中包含了对应的数据类型

2. 特殊的检测结果:

        NaN / Infinity 都是数字类型的,检测出来的都是"number"

        typeof null 的结果是"object"(这个是浏览器的bug,所有的值在计算中都以二进制存储,浏览器把前三位是000的当做对象,而null的前三位就是000,所以被识别为对象,但是它不是对象,是空对象指针,是基本类型值)

       typeof 普通对象/数组对象/正则对象/日期对象...结果都是"object",这样就无法基于typeof区分是普通对象还是数组对象等(缺点)

3.例题

console.log(typeof[ ]);//"object",必须加" "

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

例题,判断x的数据类型,进行操作

//已知有一个变量x,我们无法确定其数据类型,我们需要有一个判断操作,当x的类型是对象的时候(什么对象都可以),则处理对应的事情

if(typeof x == "object"){//这种方法不可以,因为null检测的结果也是"object",所有结果是"object"的,不一定是对象,还有可能是null}

应该这样写:

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

18年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值