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]
要注意的是:可以识别标准类型及内置对象类型,但不能识别自定义类型

浙公网安备 33010602011771号