简单说明 tyeeof 和 instanceof检测数据类型有什么不同

js数据类型

值类型(基本数据类型)
   string  number  boolean null  undefined
引用数据类型
  object   array    function  
计算机typeof() 返回的数据类型是按照机器码的后三位来决定的

一般基本数据类型都是正常返回,但是NULL 值是一个特殊的
因为他的机器存储码是 0000…000 所以他的返回类型并不是它本身 他会返回一个Object

typeof()检测引用数据类型

一般来说,会返回两种数据类型
1.object
2. function
3.

为什么会这样

1.因为在js设计语言之初,内置了一个方法 call
2.检测时会判断这个引用类型上,是否有这个call方法 如果有就返回function 反之object

instanceof 检测

instanceof 返回布尔值
console ([] instanceof Array) // true
可以理解为:
根据原型链 来检测 a 是不是 b 实例化的 是 true 否 继续向上推导

总结

typeof和instanceof都是用来检测变量类型的操作符,二者的区别在于

typeof是判断变量是什么基本类型的; instanceof是判断对象到底是什么类型的

typeof or instanceof 都不能完美帮我们判断出类型,所以我们需要一个兼容两者的方法:

跨原型链调用toString()方法:Object.prototype.toString(),可以解决跨框架问题。
这是对象的一个原生原型扩展函数,可以用来精确的区分数据类型

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值