数据类型
在JavaScript中,包含6种数据类型,字符串(string),数值(number),布尔值(boolean),undefined,null及对象(object)。
var str="Hello,world";
var i=10;
var f=2.3;
var b=true;
console.log(typeof str);//string
console.log(typeof i);number
console.log(typeof f);number
console.log(typeof b);boolean
console.log(typeof x);undefined
对象类型
对象类型是一种复合的数据类型,其基本元素由基本数据类型组成,当然不限于基本类型,比如对象类型中的值可以是其他的对象类型实例,如下:
var str="Hello,world";
var obj=new Object();
obj.str=str;
obj.num=2.3;
var array=new Array("foo","bar","zoo");
var func=function(){
console.log("this is a Function");
};
console.log(typeof obj);//object
console.log(typeof func);//function
console.log(typeof array);//object
console.log(typeof str);//string
可以看出对象和数组的类型都是object,对象和数组的界限并不那么明显(实际上他们属于同一类型object)但他们的行为有所不同
类型的判断
JavaScript是一个弱类型的语言,但有时候我们需要知道数据类型 ( typeof instanceof )
function handleMessage(handle,message){
return handle(message);
}
在调用handleMessage时如果传入的handle不是函数则会报错,因此我们有必要调用前进行判断
function handleMessage(handle,message){
if(typeof handle=="function"){
return handle(message);
}else{
throw new Error("handle is not a Function");
}
}
但是typeof并不是总有效,比如下面这种情况。
var obj={};
var array=[];
console.log(typeof(obj));//object
console.log(typeof(array));object
运行结果都是object,这样我们将无法判断数组和对象,这时候可以通过调用instanceof来进行判断
console.log(obj instanceof Array);//false
console.log(array instanceof Array);//true
因此我们可以将typeof操作符和instanceof