一、js数据类型分为8种,5种基本类型,3种引用类型
基本(值)数据类型:
Number:数字类型
String:字符串类型
Boolean:布尔类型
Null:空
Undefined:未定义
引用(对象)类型:
Object:任意一种对象
Function:一种特别的对象(可执行)
Array:一种特别的对象(数字下标,内部数据是有序的)
二、使用typeof和instanceof判断数据类型
typeof:用于判断基本数据类型,返回值类型是字符串
instanceof:用于判断对象的具体类型,返回值类型是Boolean
===:可以用来判断,null和undefined (这两种数据有一个共同特点是都是只有一种情况,不像Boolean类型,可能是true,也可能是false);
//typeof使用实例:
var b=true;
console.log(typeof b);//'boolean'
var c="";
console.log(typeof c);//'String'
var d=1;
console.log(typeof d);//'Number'
var e,f=undefined;
console.log(typeof e,typeof f);//'undefined' 'undefined'
var a=null;
console.log(typeof a);//'object'
var obj={};
console.log(typeof obj);//'object'
var arr=[1,2,3];
console.log(typeof arr);//'object'
var fn=function(){
alert("aaa");
}
console.log(typeof fn);//'function'
由上面可以看出,typeof对于null和array和object没有办法准确的测出其类型,返回值都是Object类型
//instanceof实例:
var obj={
b1:[1,console.log],
b2:function(){
alert(111);
}
}
console.log(obj instanceof Object); //true
console.log(obj.b1 instanceof Object,obj.b1 instanceof Array);//true true
console.log(obj.b2 instanceof Object,obj.b2 instanceof Function);//true true
var a=null;
console.log(a instanceof Object);//false
用instanceof 方法可以明显的把null类型排除掉,同时对于对象类型他们本身就都是对象所以当匹配Object的时候返回的自然是true。
那最后怎样区别array和object呢?
console.log(obj instanceof Object&& (toString.call(obj) !== “[object Array]”));
利用toString方法判断是否为数组