array.isarray 是唯一可靠且跨环境判断数组的方法,因 typeof 返回 "object" 无法区分对象,instanceof 在 iframe 中失效,tostring.call 冗长;它接收一个参数返回布尔值,广泛用于参数校验、数据预处理等场景。

Array.isArray 是 JavaScript 中唯一可靠、跨环境(包括 iframe)判断一个值是否为数组的方法,能准确区分数组与普通对象、类数组对象、null 等其他类型。
为什么不能用 typeof 或 instanceof?
typeof [] 返回 "object",无法和普通对象区分;
instanceof Array 在多 iframe 环境下会失效(不同全局上下文的 Array 构造函数不相等);
Object.prototype.toString.call([]) 虽然可行,但写法冗长且易出错。
Array.isArray 的基本用法
它接收一个参数,返回布尔值:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- Array.isArray([]) → true
- Array.isArray({}) → false
- Array.isArray(null) → false
- Array.isArray("abc") → false
- Array.isArray(new Array(1, 2)) → true
实际开发中的典型场景
常用于函数参数校验、API 响应数据预处理、工具函数封装等:
- 接收可变参数时统一转为数组:
function process(...args) { const arr = Array.isArray(args[0]) ? args[0] : args; } - 处理后端返回数据(可能为数组或单个对象):
const items = Array.isArray(data) ? data : [data]; - 配合 reduce/map 前做安全判断,避免 TypeError:
if (Array.isArray(input)) input.map(...);
兼容性注意(仅需了解)
IE9+、所有现代浏览器均原生支持;
如需支持 IE8 及更早版本,可用 polyfill:
- if (!Array.isArray) { Array.isArray = function(arg) { return Object.prototype.toString.call(arg) === '[object Array]'; }; }
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










