js数据类型判定知识点
一、js数据类型判断
1、js数据类型分为两大类:基本数据类型和引用数据类型
1)基本数据数据类型:
Number、String 、Boolean、Null、Undefined(5种)
2)引用数据类型 :
object | Symbol | bigInt |
---|---|---|
Object对象、Array数组、RegExp正则、Date时间对象、Function函数等 | es6 | 谷歌67版本出现的一种类型,是指安全存储、操作大整数 |
2、判断方法有如下
typeof | instanceof | Object.prototype.toString.call() | |
---|---|---|---|
优点 | 可判断undefined、String、Number、Boolean类型 | 能检测Array、Function、Object类型 | 能准确的判断所有的类型 |
缺点 | 无法区分Null(返回undefined)、Object和Array等都会返回Object | 检测不了Number、Boolean、String、Null、Undefined | 写法比较繁琐 |
二、js数组和对象变量判断
1、constructor
console.log(a.constructor === Array)
2、instanceof
console.log(a instanceof Array)
3、isArray
console.log(a.isArray())
4、Object.prototype.toString.call
object.prototype.toString.call(a) === '[Object Array]' //判断数组
object.prototype.toString.call(a) === '[Object Object]' //判断对象
必须使用原型链最顶端的toString方法,为什么呢?
因为普通对象的toString()是可以改写的,比如Array、Function等类型作为Object的实例,都重写了toString方法。
5、上述方法优劣比较
constructor | instanceof | isArray | object.prototype.toString.call |
---|---|---|---|
判定的数组 必须定义在同一个页面 (eg:iframe) | 判定的数组 必须定义在同一个页面 (eg:iframe) | 兼容性问题(IE8不支持) | 无 |