数据类型检测

98 阅读1分钟

数据类型检测

数据类型

基本数据类型:字符串、数字、布尔、undefined、null、Symbol
引用数据类型:对象、数组、函数、正则、日期

typeof 检测

结论
简单数据类型:除了null检测结果为object,其余都能正常检测
引用数据类型:function以及构造函数检测值为function,其余全为object

console.log(typeof 123)     //number
console.log(typeof 'a')     //string
console.log(typeof false)   //boolean
console.log(typeof undefined) //undefined
console.log(typeof null)      //⭐Object
console.log(typeof function () { }) //function
console.log(typeof Object); //function Object是构造函数
console.log(typeof Symbol())  //symbol
console.log(typeof /1-9/)    //object
console.log(typeof new Date()) //object

instance of

结论
使用instanceof可以检测构造函数的实例对象,但不能检测字面量、字符串、布尔值

image.png

constructor

结论
每个对象身上都有一个constructor属性,它的作用是说明它自身是哪个构造函数的原型对象
不能用于undefined和null的判断,因为他们没有构造函数
说明constructor是可以修改的

console.log([].constructor === Array); // true

console.log({}.constructor === Object); // true

console.log((1).constructor === Number); // true

console.log(('a').constructor === String); // true

console.log(true.constructor === Boolean); // true

console.log(null.constructor); // 报错:因为null没有构造函数
console.log(undefined.constructor); // 报错 因为undefined没有构造函数

toString方法

结论
推荐使用,可以检测所有数据类型的方法,都能返回正确结果

image.png