js判断数据类型的四种方式

1.typeof

用法:typeof '123' === 'string'
缺点:只能判断基础数据类型(除null以外),如果是引用数据类型(如数组、函数、对象等)会返回Object

因为typeof是直接在计算机里面基于二进制值进行检测的,也就是数据类型都是二进制值,对象存储在计算机中,二进制的值都是以000开头,而null值为000,所以typeof(null)为object 

2.instanceof

用法:'123' instanceof String
缺点:无法检测基础数据类型,因为instanceof是检测当前判断的类是否出现在实例的原型对象,会循着原型链寻找,所以我们可以改变原型链的指向导致数据类型不准确;

3.constructor

用法:'123'.constructor === String
缺点:constructor可以改变,会导致判断不准确;

4.Object.prototype.toString.call()

用法:Object.prototype.toString.call('123');
缺点:写起来比较麻烦;

此方法是检测数据类型最准确的方法

总结

① typeof只能检测基本数据类型(除null),对于数组、对象、正则等引用数据类型都返回为Object;

② instanceof不能检测基本数据类型,检测引用类型时会顺着原型链往上找,只要原型链上存在就会返回true,我们也可以随意更改原型链的指向,导致检测结果不准确;

③ constructor可以检测基本数据类型,也能分辨出数组和对象,因为我们可以更改constructor,随意会导致检测结果不准确;

④ Object.prototype.toString.call()是最准确的;

posted @   spongeCoder  阅读(6729)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示