javascript中有五种检测数据类型的方法,分别为typeof运算符constructor方法,instanceof运算符object.prototype.toString方法和Array.isArray(用于检测数组),下面分别介绍以上几种方法:
1.typeof运算符:
是js原生提供的运算符,比较常用,返回一个
表示参数的数据类型的字符串
var a = "javascript";
console.log(typeof(a)); // string
typeof运算符返回值总结:
|数据类型|返回值|
|-----------|-----------|
|undefined|"undefined"|
|null |"ocject"|
|boolean| "boolean"|
|number| "number"|
|String| "string"|
|function| "function"|
|array|"object"|
由此可见,当要检测数组和null时都返回object,因此不可以用typeof检测数组
2.constructor方法:
利用constructor方法检测数组:实例化的数组拥有一个constructor属性,这个属性指向生成这个数组的方法
例如:
var a = [];
console.log(a.constructor); //functionArray(){[native code]};
可以看出,数组是由Array函数实例化的其他类型测试代码如下:
var a - {};
console.log(a.constructor); //function Object(){[native code]};
var b = /^[0-9]$/;
console.log(b.constructor); //function RegExp(){[native code]}
var c = null ;
console.log(c.constructor); //报错
此方法可以用来检测数组,例如:
var a = [];
console.log(a.constructor==Array); //true
但是用constuctor测试数组是不一定准确的,因为constuctor属性可以被修改,修改后将返回被修改后类型
3.instanceof运算符
instanceof运算符