js函数区分数组和对象

当数组作为操作数并使用typeof操作符时,其结果会返回"object",因为数组也是对象。但是这对于排除错误没有什么帮助,通常我们需要知道某个值是否为一个数组。有时候检查代码可以用是否存在length属性或一些数组方法,但是这些检查并非万能,我们无法确定一个非数组对象就不能拥有这些属性和方法。还可以使用instanceof Array进行检查,但是这种检查存在兼容性问题。

ECMAScript 定义了Array.isArray(),方法,接受参数为数组时返回true。但是有些环境不支持这种方法,最好的检查数组性质的方法是Object.prototype.toString.call方法,若是数组会返回[object Array],若是对象则为[object object]。因此要用如下方法检测:

if(typeof Array.isArray === "undefined"){
  Array.isArray = function(arg){
     return Object.prototype.toString.call(arg) === "[object Array]";
  };
}
//调用Array.isArray()




你可能感兴趣的:(js数组类型)