2 回答
TA贡献1858条经验 获得超8个赞
如果你只是用typeof来检查该变量,不论是array还是object,都将返回‘objec'。
此问题的一个可行的答案是是检查该变量是不是object,并且检查该变量是否有数字长度(当为空array时长度也可能为0)。
然而,参数对象【arguments object】(传给制定函数的所有参数),也可能会适用于上述方法,技术上来说,参数对象并不是一个array。
此外,当一个对象有a.length属性的时候,这个方法也不成立。
// Real array 正在的数组
var my_array = [];
// Imposter! 冒名顶替的!
var my_object = {};
my_object.length = 0;
// Potentially faulty 潜在的错误
function is_this_an_array(param) {
if (typeof param === 'object' && !isNaN(param.length)) {
console.log('Congrats, you have an array!');
}
else {
console.log('Bummer, not an array');
}
}
// Works 成功
is_this_an_array(my_array);
// Works, but is incorrect 成功了,但是不正确
is_this_an_array(my_object);
TA贡献1826条经验 获得超6个赞
if(typeof(obj)=="object"){alert("是对象")}else{alert("不是")},
但是javascript对于object定义的很宽泛,很多东西javascript都会认为是object,比如Date, String, Boolean, Number, Object, Function, Array, RegExp, Error。
判断是不是array,可以使用isArray()来判断
if(array.isArray()){"array是数组"}else{"array不是数组"}
添加回答
举报