最可靠的方法是使用 array.isarray(),它是ecmascript 5引入的官方方法,能准确识别原生数组、跨iframe安全,且浏览器和node.js全面支持(ie9+)。

最可靠的方法是使用 Array.isArray()。
推荐:Array.isArray() —— 标准、兼容、准确
这是 ECMAScript 5 引入的官方方法,专门用于判断一个值是否为数组,能正确处理跨 iframe 场景(其他方法可能失效)。
-
✅ 正确识别原生数组:包括字面量
[]、new Array()、函数返回的数组等 - ✅ 跨上下文安全:在不同 iframe 或 window 中创建的数组也能准确识别
- ✅ 浏览器和 Node.js 全面支持(IE9+,现代环境无兼容问题)
用法示例:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
Array.isArray([]); // true<br>Array.isArray([1, 2]); // true<br>Array.isArray(new Array()); // true<br>Array.isArray({}); // false<br>Array.isArray("abc"); // false<br>Array.isArray(null); // false
不推荐但需了解的其他方式
以下方法存在局限性,仅作技术参考,生产环境请优先用 Array.isArray()。
-
obj instanceof Array:依赖构造函数原型链,在跨 iframe 时可能返回false(因不同上下文的Array构造函数不相等) -
Object.prototype.toString.call(obj) === '[object Array]':历史上曾用于类型检测,虽能跨上下文,但写法冗长、可读性差,且已被Array.isArray()取代 -
Array.prototype.isPrototypeOf(obj)或检查obj.length和obj.push等属性:不可靠,类数组对象(如arguments、NodeList)也会“看起来像数组”
注意:避免用 typeof 判断数组
typeof [] 返回 "object",无法区分数组与普通对象,完全不可用。
小结:一句话记住
检测变量是否为数组,请始终首选 Array.isArray(value),它简洁、标准、健壮,没有例外场景。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










