1, typeof:为一个一元运算符,放在一个运算数之前,运算数可以是任何类型。 返回结果为一个字符串,该字符串对应运算数的数据类型. 用法:typeof xxx 局限性:不能检测引用数据类型,因为检测数组,正则...返回的也是object
2, instanceof:用来检测某个实例是否属于这个类
局限性:要求检查的实例是对象数据类型,不支持基本数据类型的检测(字面量方式的)
基本数据类型在js中的特殊性: 创建方式有2种: 1)字面量创建方式 let n=10; 2)构造函数创建方式 let m=new Number(10);//创建出来的实例是对象类型的
3, constructor constructor作用和instanceof非常相似。 但constructor检测 Object与instanceof不一样,还可以处理基本数据类型的检测 局限性: 1.constructor 不能用于判断null和undefined (不存在constructor) 2.如果object被重新覆盖,检测结果就会不准确
4, Object.prototype.toString.call():可以判断所有类型 得到的结果为'[object String]'类型的字符串
总结:综上,可以得出结论 Symbol、string、number、boolean、function、undefined 使用 typeOf() null、[]、obj、Date()、RegExp() 使用instanceof 或者所有的类型检测都用Object.prototype.toString.call(),更有逼格 即可做到正确检测。
5,严格运算符 === 只能用于判断null 和 undefined
var a = null
typeof a // "object" a === null // true