JavaScript中的类型判断方法(全)
js中的数据类型
基本数据类型:Undefined、Null、Boolean、Number、String,Symbol
引用数据类型 :Object
一般而言,我们还需要额外判断一下是Array类型还是Object
今天就专门整理了下,下面用表格做一个对比
数据 | typeof | instanceof | constructor | Object.prototype.toString.call |
---|---|---|---|---|
const und = undefined | 'undefined' | undefined instanceof Object // false | 无该属性 | Object.prototype.toString.call(und) //object Undefined |
const nul = null | 'object' | null instanceof Object // false | 无该属性 | Object.prototype.toString.call(nul) //object Null |
const bool = false | 'boolean' | false instanceof Boolean // false | bol.constructor === Boolean // true | Object.prototype.toString.call(bool) //object Boolean |
const num = 1 | 'number' | 1 instanceof Number // false | num.constructor === Number // true | Object.prototype.toString.call(num) //object Number |
const str = 'test' | 'string' | 'test' instanceof String // false | str.constructor === String // true | Object.prototype.toString.call(str) //object String |
const sym = Symbol() | 'symbol' | sym instanceof Symbol // false | sym.constructor === Symbol // true | Object.prototype.toString.call(sym) //object Symbol |
const obj = {param:1} | 'object' | obj instanceof Object // true | obj.constructor === Object // true | Object.prototype.toString.call(obj) //object Object |
const arr = 1,2,3 | 'object' | 1 instanceof Object //true | arr.constructor === Array // true | Object.prototype.toString.call(arr) //object Array |
总结 | 无法区分数组 对象和null | 无法识别基本数据类型 | 依然不能判断所有类型 | 可以适当封装用于数据类型判断 |
当然,不同场景使用不同的判断方法。简单类型的判断,使用typeof即可(null的问题属于历史遗留),针对array和object再作进一步区分即可(可以使用Array.isArray())