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一样,无法判断nullundefined,因为不是对象,没有构造函数。

4.prototype.toString

toString() 是 Object 的原型方法,调用该方法,默认返回当前对象的 [[Class]] 。这是一个内部属性,其格式为 [object Xxx] ,其中 Xxx 就是对象的类型。
对于 Object 对象,直接调用 toString() 就能返回 [object Object] 。而对于其他对象,则需要通过 call / apply 来调用才能返回正确的类型信息。

用法:Object.prototype.toString.call(value)
返回的是[object Xxx]
要注意的是:可以识别标准类型及内置对象类型,但不能识别自定义类型
posted @   badpear  阅读(104)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示