数据类型
基本(值)类型
String
任意的字符串
Number
任意的数字
boolean
true/false
undefined
本身
null
null
对象(值)类型
Object
任意的对象
Function
Function是一个特殊的object类型,使用typeof无法区分是Object还是Function,因为typeof 函数,返回的是一个Object 字符串
Array
Array 也是一个特殊的Object类型,使用typeof 无法区分是Object还是具体的Array类型
怎么判断一个对象属于哪种数据类型呢?
方法1 使用typeof
方法2 使用 instanceof
方法3 使用 ===(全等,既判断数据类型,也判断值类型)
当然这三种方法有局限性。
判断一个对象的数据类型是否为undefined
1.使用typeof 关键字,返回的是一个数据类型字符串(全部小写)
var a;//undefined
console.log(typeof a);// 'undefined'
所以可以通过 typeof a == ‘undefined’
进行判断一个对象是不是undefined类型
2.使用 全等符号(===)
因为全等符号即判断 数据类型是否相等,也判断值类型是否相等
console.log(a === undefined)//true
数值、string、boolean类型使用typeof进行判断
//数值类型
a=3;
console.log(typeof a === 'number');
//String 类型
a = 'xxxx';
console.log(typeof a === 'string');
//Boolean类型
a = true;
console.log(typeof a === 'boolean');
空类型的区分
当a=null的时候,无法使用typeof 进行判断,因为typeof a === ‘object’
空对象(也是一种对象)
使用 全等运算符 (===)
a = null
console.log(a===null);
对象类型
var b1 = {
b2:[1,2,'abc',console.log],
b3:function(){
console.log('b3');
return function(){
return 'wp'
}
}
}
//其中 b1是一个对象
//b2是一个数组
//b3是一个函数
instanceof出场,使用在对象上
console.log(b1 instanceof Object);//当然是true啦
console.log(b1 instanceof Array);//false;b1不是Array的实例
console.log(b1.b2 instanceof Array,b1.b2 instanceof Object);//数组是特殊的对象
console.log(b1.b3 instanceof Function,b1.b3 instanceof Object);//函数一个一个特殊的对象
使用typeof 判断一个对象是不是function数据类型
console.log(typeof b1.b3 === 'function')//true
总结
使用typeof 可以判断对象是不是 undefined、数值、字符串、boolean、function
不能判断 null 和 object,object 和 array 因为typeof null或者array 都是 object类型
===可以判断undefined ,null
因为这两种类型只有一个值