数据类型判断
//基本数据类型
//Number,String,Boolean,Null,Undefined
//引用数据类型
//Object -->{Array,function,Object,Date,RegExp}
function fn(){};
console.log("用typeof检测")
console.log(typeof 100) //number
console.log(typeof 'htm') //string
console.log(typeof true) //boolean
console.log(typeof null) //object 不准确
console.log(typeof undefined) //undefined
//引用数据类型
console.log(typeof {}) //object
console.log(typeof fn)
//typeof : 可以检测基本数据类型(null会返回object)
//检测引用数据类型,都会返回object (function会返回function)
console.log("以下用instanceof检测")
var n=new Number(100)
console.log(100 instanceof Number) //错误false
console.log(n instanceof Number) //正确true
//引用数据类型
console.log([] instanceof Array)
console.log({} instanceof Object)
console.log(new Date() instanceof Date)
console.log(/100/ instanceof RegExp)
console.log(fn instanceof Function)
//检测基本数据类型失效(除非用构造函数创建)(null,undefined报错)
//可以检测引用数类型
console.log("以下用constructor检测")
var n=100
console.log(n.constructor==Number)
console.log('100'.constructor==String)
console.log(true.constructor==Boolean)
console.log([].constructor==Array)
console.log(new Date().constructor==Date)
//可以准确检测基本数据类型,和引用数据类型。(null,undefined会报错)
//在构造函数创建类的时候,可以人为修改constructor,会导致检测失真
console.log("完美检测方案")
console.log(Object.prototype.toString.call(n))
console.log(Object.prototype.toString.call({}))
//都可以测