JS数据类型?判断数据类型的几种方法?
数据类型种类
七种基本数据类型
Number、String、Boolean、BigInt、Symbol、Null、Undefined
附:BigInt也是ES6新出的一种数据类型,这种数据类型的特点就是数据涵盖的范围大,能够解决超出普通数据类型范围报错的问题。
使用方法:
-整数末尾直接+n:647326483767797n
-调用BigInt()构造函数:BigInt("647326483767797")
Object(引用数据类型也叫复杂数据类型)
普通对象,数组,正则,函数都属于Object
判断数据类型的几类方法?
1.typeof
大体上返回上述八个基本数据类型外加symbol和function
需要注意的是: null->object (异常) symbol->object symbol (奇怪) typeof(String) typeof(String()) 都是function 而typeof(new String) 是String
2.instanceof
检测原型,通过a instance b的方式,判断a是否是b的实例,会通过原型链向上找,所以只能判断实例关系,无法确定是否是该类型。
有意思的现象是,instacneof的右边必须是object,但null在此处不算object,据资料,是特性(设计失误)。所以null和undefined无法在此判断类型,实际上,null和undefined都不算对象。
需要注意的是,null instanceof object ->false
3.constructor
一个对象在构造出来的时候会有一个构造方法,constructor能得到这个方法。
通过 a.constructor == function的方式判断类型(如String)。
需要注意的是,同instacneof一样,无法判断null和undefined,因为不是对象,没有构造函数。
4.prototype.toString
toString() 是 Object 的原型方法,调用该方法,默认返回当前对象的 [[Class]] 。这是一个内部属性,其格式为 [object Xxx] ,其中 Xxx 就是对象的类型。
对于 Object 对象,直接调用 toString() 就能返回 [object Object] 。而对于其他对象,则需要通过 call / apply 来调用才能返回正确的类型信息。
用法:Object.prototype.toString.call(value) 返回的是[object Xxx] 要注意的是:可以识别标准类型及内置对象类型,但不能识别自定义类型
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构