array.isarray 是判断数组最可靠的方法,返回布尔值;typeof 无法区分数组与对象,instanceof 在多 iframe 下失效,而 array.isarray 跨环境稳定,类数组对象也返回 false。

Array.isArray 是 JavaScript 中专门用来判断一个值是否为数组的可靠方法,它返回布尔值:true 表示是数组,false 表示不是。
为什么不用 typeof 或 instanceof?
typeof [] 返回 "object",无法区分数组和普通对象;instanceof Array 在多 iframe 环境下可能失效(不同上下文的 Array 构造函数不同),而 Array.isArray 是 ECMAScript 5 引入的标准方法,跨环境稳定可靠。
基本用法很简单
直接传入要检测的值即可:
-
Array.isArray([])→true -
Array.isArray([1, 2, 3])→true -
Array.isArray({})→false -
Array.isArray("hello")→false -
Array.isArray(null)→false -
Array.isArray(undefined)→false
常见误判场景要注意
以下看似像数组的值,Array.isArray 都会返回 false:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 类数组对象(如
arguments、NodeList):它们有 length 和索引,但不是 Array 实例 - 字符串、数字、布尔值、日期、正则等原始类型或对象实例
- 自定义类的实例,即使内部结构类似数组
如果需要处理类数组,可先用 Array.from() 或展开语法转成真数组再操作。
兼容性与替代方案(极少数旧环境)
IE8 及更早版本不支持 Array.isArray。如需兼容,可用以下兜底判断:
function isArray(val) {<br> return Object.prototype.toString.call(val) === '[object Array]';<br>}
现代项目基本无需考虑此兼容问题,直接用 Array.isArray 即可。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










