首先要知道js的数据类型有六种:
number,String,null(为空),undefined(未知的),boolean,object(Array属于object)
typeof和instanceof都可以用来判断类型 区别如下:
1.typeof:
typeof会返回一个变量的基本类型,只有以下几种:number,boolean,string,object,undefined,function;
eg:
function ceshi(){
window.open("ceshi.html","toolbar,menubar,scrollbars,resizable,ststus,location,directories,copyhistory,height= 400,width=500");
}
var array=[1,2,3,4];
document.write(typeof ceshi);//function
var array;
document.write(typeof array);//undefined
var array='';
document.write(typeof array);//string
var array=[];
document.write(typeof array);//object
注意:判断一个变量是否存在,可以使用typeof(不可以使用if(array)如果变量未申明,会报错)
if(typeof array!='undefined'){//变量存在}
2.instanceof:
instanceof只能用来判断对象和函数,不能用来判断字符串和数字等,
var b = '123';
alert(b instanceof String); //false
alert(typeof b); //string
var c = new String("123");
alert(c instanceof String); //true
alert(typeof c); //object
判断是不是数组:
var arr = [1,2,3];
function isArrayFn(obj){ //封装一个函数
if (typeof Array.isArray === "function") {
return Array.isArray(obj); //浏览器支持则使用isArray()方法
}else{ //否则使用toString方法
return Object.prototype.toString.call(obj) === "[object Array]";
}
}
alert(isArrayFn(arr));// true