
本文介绍了三种判断变量是数组还是对象的方法:
- typeof无法区分数组和对象,都返回"object";
- instanceof可以区分,但需要先判断数组再判断对象;
- Array.isArray()专门用于判断数组。
第三种方法最为简洁可靠,推荐使用。
文章通过代码示例展示了每种方法的使用场景和局限性。
一、使用typeof
javascript
let str = '';//文本
console.log(typeof str);//string
let num = 1;//数字
console.log(typeof num);//number
let bol = true;//布尔值
console.log(typeof bol);//boolean
let arr_obj=[];//数组
console.log(typeof arr_obj);//object
let obj_obj={};//对象
console.log(typeof obj_obj);//object
其中数组和对象,使用typeof,输出结果是object,不能判断是数组还是对象。
二、使用instanceof
javascript
let arr = [];
console.log(arr instanceof Array);//true
console.log(arr instanceof Object);//true
let obj = {};
console.log(obj instanceof Array);//false
console.log(obj instanceof Object);//true
使用instanceof因先判断是否是数组,然后再判断是否对象
javascript
function isArrOrObj(o) {
if (o instanceof Array) {
return '数组';
} else if (o instanceof Object) {
return '对象';
} else {
return '不能确定是数组或对象'
}
}
let arr = [];
let obj = {};
console.log(isArrOrObj(arr));//数组
console.log(isArrOrObj(obj));//对象
三、使用Array.isArray()
javascript
let arr = [];
let obj = {};
console.log(Array.isArray(arr));//true
console.log(Array.isArray(obj));//false