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()是最准确的;
标签:
javaScript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY