typeof运算符可以返回一个值的数据类型。数值、字符串、布尔值分别返回number、string、boolean。
function fun() {}
console.log(typeof 123)//number
console.log(typeof '123')//string
console.log(typeof false)//boolean
console.log(typeof undefined)//undefined
console.log(typeof a)//undefined a没有声明
console.log(typeof [])//object
console.log(typeof {})//object
console.log(typeof fun)//function
console.log(typeof null)//object
- 总结:根据上面的结果,typeof不仅可以区分基本数据类型还可以区分Object和function
instanceof判断对象‘具体’类型。function、array是特殊的object,那么要怎么区分是function、array的类型呢?
- instanceof查看构造函数是否在实例对象的原型链上
var obj = {
arr:[2,'23',console.log],
fun:function(){
console.log(obj.arr)
}
}
console.log(obj instanceof Object,obj instanceof Array)//true false
console.log(obj.arr instanceof Object,obj.arr instanceof Array)//true true
console.log(obj.fun instanceof Object,obj.fun instanceof Function)//true true
用===判断undefined和null,因为undefined和null都只有一个值而且还是他们本身
var a
console.log(a==='undefined',a===undefined)//false true
var b = null
console.log(b===null)//true
//注意的是null == undefined结果是true
console.log(null == undefined)//true