Array.isArray()是最可靠的数组检测方法,解决typeof误判和instanceof跨上下文失效问题。它跨环境准确识别,返回布尔值,能区分类数组对象,兼容IE9+,旧环境可用Object.prototype.toString回退。
Array.isArray()是判断数组最可靠的方法,因typeof[]返回"object"、instanceof Array在多上下文失效,而它专为跨环境准确识别设计,兼容IE9+,返回布尔值,且能区分类数组对象。

判断一个值是否为数组,在JavaScript中是一个经典问题。经验丰富的开发者几乎都会推荐Array.isArray()——它确实是最可靠、最直接的方法。
长期稳定更新的攒劲资源: >>>点此立即查看<<<
过去常用的方案有两种:typeof和instanceof,但都存在明显缺陷:
- typeof []返回"object",无法区分对象、数组和null;
- arr instanceof Array在跨iframe或多个执行上下文(如不同window)时,因Array构造函数不相等,判断会失效。
Array.isArray()是ECMAScript 5引入的标准方法,专为跨环境、跨上下文准确识别数组设计。兼容性方面,支持IE9+及所有现代浏览器,日常开发可放心使用。
语法简单:传入任意值,返回布尔值。以下示例清晰说明:
Array.isArray([]) → trueArray.isArray([1, 2, 3]) → trueArray.isArray({}) → falseArray.isArray(null) → falseArray.isArray("hello") → falseArray.isArray(undefined) → false结果直观,无歧义。
有些对象看起来像数组,例如函数内部的arguments、DOM查询返回的NodeList,它们具有length属性和索引,但并非真正的Array实例。使用Array.isArray()可准确识别:
function f() { return Array.isArray(arguments); } → falseArray.isArray(document.querySelectorAll("div")) → false如需统一处理类数组对象,可先通过Array.isArray()判断,再决定是否转换。例如使用展开运算符[...nodeList]或Array.from()将其转为真正数组,后续操作更加便捷。
如需支持IE8及更早版本,可添加以下polyfill:
if (!Array.isArray) {
Array.isArray = function(arg) {
return Object.prototype.toString.call(arg) === "[object Array]";
};
}
该代码利用Object.prototype.toString的内部机制,是业界公认的标准回退方案。不过,当前项目中仍使用IE8的情况已很少见,日常开发基本无需考虑。
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述