最可靠的方法是使用 Array.isArray(),它是 ECMAScript 5 标准引入的原生方法,专为准确判断数组类型而设计,支持 IE9+ 及现代环境,能正确处理跨 iframe 场景。

最可靠的方法是使用 Array.isArray(),它是 ECMAScript 5 标准引入的原生方法,专为准确判断数组类型而设计。
推荐:使用 Array.isArray()
这是唯一被广泛支持、语义明确且能正确处理跨 iframe 场景的方法:
- 对普通数组返回 true:
Array.isArray([1, 2, 3]) // true - 对类数组对象(如 arguments、NodeList)返回 false:
Array.isArray(arguments) // false - 在不同 iframe 或 window 中创建的数组也能正确识别,不会像
instanceof那样失效
不推荐但常见的误用方式
typeof [] === 'object' —— 不行,因为数组是对象,typeof 无法区分;
arr instanceof Array —— 在多全局环境(如 iframe)中可能返回 false,不可靠;
Object.prototype.toString.call(arr) === '[object Array]' —— 虽然有效,但写法冗长,且 ES5 后已无必要。
兼容性说明
Array.isArray() 支持 IE9+、所有现代浏览器及 Node.js 0.6+,老项目若需支持 IE8 及以下,才需考虑 polyfill:
if (!Array.isArray) {
Array.isArray = function(arg) {
return Object.prototype.toString.call(arg) === '[object Array]';
};
}


















