数据类型及判断

125 阅读1分钟

数据类型判断

//基本数据类型
        //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({}))
//都可以测