js判断数据类型的方法
简单数据类型用:typeof,
// 可以直接typeof空格接数据的方式,也可以typeof(数据)的方式使用
console.log(typeof ""); //string(检验字符串没问题)
console.log(typeof 1); //number(检验数字没问题)
console.log(typeof true); //boolean(检验布尔值没问题)
console.log(typeof undefined); //undefined(检验undefined没问题)
console.log(typeof []); //object(检验数组待定)
console.log(typeof {}); //object(检验数字没待定)
console.log(typeof null); //object!!!(检验null没待定)
console.log(typeof function(){}); //function(检验函数没问题)
console.log(typeof Symbol()); //symbol(es6)(检验Symbol没问题)
console.log(typeof 666n); //bigint(es11)(检验bigint没问题)
// 由此可见typeof检验结果在为对象,数组,null 时都是结果都是object,所以不一定完全准确
引用数据类型用:instanceof(可以跟typeof结合起来用就能判断所有的数据类型了)
// 写法:数据空格instanceof数值类型(大写开头)
console.log(9 instanceof Number); // false(判断基本数据类型无效)
console.log(true instanceof Boolean); // false(判断基本数据类型无效)
console.log('libo' instanceof String); // false(判断基本数据类型无效)
console.log([] instanceof Array); // true(数组不再是对象类型而是具体到数组类型)
console.log({} instanceof Object); // true(依旧是对象没问题)
console.log(null instanceof Object); //false (null也不再是对象)
console.log(function(){} instanceof Function); // true(函数也没问题)
// 由此可见instanceof可以用来区别数组,对象,以及null三个类型
一步到位用:Object.prototype.toString.call()
// 最强绝招Object.prototype.toString.call()
// 这个方法几乎检验所有的数据类型,返回的结果是一个中括号型字符串,字符串后面部分即为数据类型
console.log(Object.prototype.toString.call('')) // [object String]
console.log(Object.prototype.toString.call(1)) // [object Number]
console.log(Object.prototype.toString.call(true)) // [object Boolean]
console.log(Object.prototype.toString.call(Symbol())) // [object Symbol]
console.log(Object.prototype.toString.call(666n)) // [object BigInt]
console.log(Object.prototype.toString.call(undefined)) // [object Undefined]
console.log(Object.prototype.toString.call(null)) // [object Null]
console.log(Object.prototype.toString.call(NaN)) // [object Number](NaN是个例外结果是个Number)
console.log(Object.prototype.toString.call(function(){})) // [object Function]
console.log(Object.prototype.toString.call(new Date())) // [object Date]
console.log(Object.prototype.toString.call([]) ) // [object Array]
console.log(Object.prototype.toString.call(new RegExp())) // [object RegExp]
console.log(Object.prototype.toString.call(new Error())) // [object Error]
console.log(Object.prototype.toString.call(document)) // [object HTMLDocument](甚至能识别是否为dom元素)
console.log(Object.prototype.toString.call(window)) // [object window]