参考:
https://www.runoob.com/js/js-syntax.html
https://www.runoob.com/note/26685
https://www.runoob.com/w3cnote/javascript-check-arrayisobject.html
检测变量的数据类型
1、使用 typeof 操作符
JavaScript是弱类型编程语言,定义变量都使用 var 定义,与 Java 这种强类型语言有区别。在定义后可以通过 typeof 操作符来获取 JavaScript 中变量的数据类型。
对于 Number(包括NaN), String, Undefined, Object, Function 等这几种类型来说,typeof 可以检测到,比如代码如下(//后的为输出结果):
function test(){}
console.log(typeof 1); // number 通过数字字面量赋值
console.log(typeof (5+6)); // number 通过表达式字面量赋值
console.log(typeof NaN); // number NaN的数据类型是number
console.log(typeof "yunxi"); // string 通过字符串字面量赋值
console.log(typeof undefined); // undefined
console.log(typeof {firstName:"John", age:50}); // object 通过对象字面量赋值
console.log(typeof test); // function 通过函数字面量赋值
但是对于Null、Array 、正则、Date来说,typeof 无法检测,返回的类型是一个对象Object,因为null表示一个空对象引用,而数组是一种特殊的对象类型,如下代码所示:
console.log(typeof null); // object
console.log(typeof []); // object
console.log(typeof /\d+/g); // object
console.log(typeof new Date()); // object
判断对象是否为数组
typeof 操作符不能用来判断是 Array 还是 Object
var arr = [] typeof(arr) === 'object' // true
这是因为,就算变量定义的是数组格式,typeof 返回的数据类型还是 Object :
var cars=new Array();
cars[0]="Saab";
cars[1]="Volvo";
cars[2]="BMW";
document.write(typeof cars); // object
1、使用 isArray 方法
var cars=new Array();
cars[0]="Saab";
cars[1]="Volvo";
cars[2]="BMW";
// 判断是否支持该方法
if (Array.isArray) {
if(Array.isArray(cars)) {
document.write("该对象是一个数组。") ;
}
}
2、使用 instanceof 操作符
var cars=new Array();
cars[0]="Saab";
cars[1]="Volvo";
cars[2]="BMW";
if (cars instanceof Array) {
document.write("该对象是一个数组。") ;
}