最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
如何用 Array.isArray 判断变量是否为数组
时间:2026-07-14 11:01:30 编辑:袖梨 来源:一聚教程网
Array.isArray()是判断数组最可靠的方法,因typeof[]返回"object"、instanceof Array在多上下文失效,而它专为跨环境准确识别设计,兼容IE9+,返回布尔值,且能区分类数组对象。
Array.isArray() 是 JavaScript 中最可靠、最直接判断一个值是否为数组的方法。
为什么推荐用 Array.isArray()
过去常用 typeof 或 instanceof,但它们都有缺陷:
– typeof [] 返回 "object",无法区分数组和其他对象;
– arr instanceof Array 在 iframe 或多个执行上下文(如不同 window)中会失效,因为不同环境的 Array 构造函数不相等。
Array.isArray() 是 ECMAScript 5 引入的标准方法,专为跨环境、跨上下文准确识别数组设计,兼容性好(IE9+,现代浏览器全支持)。
基本用法
语法很简单:传入任意值,返回布尔值。
-
Array.isArray([])→true -
Array.isArray([1, 2, 3])→true -
Array.isArray({})→false -
Array.isArray(null)→false -
Array.isArray("hello")→false -
Array.isArray(undefined)→false
常见误判场景与应对
有些类数组对象(如 arguments、NodeList)容易被误认为数组,但它们不是真正的 Array 实例:
-
function f() { return Array.isArray(arguments); }→false -
Array.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 的内部机制,是标准 fallback 方案,但日常开发中已很少需要。
相关文章
- 剑与远征启程拉曼提斯角色强度怎么样 07-17
- 星光小队射手玩法指南 07-17
- 乱涂彩世界披萨教父怎样打 07-17
- 番茄小说网页版登录入口-番茄小说网页版登录 07-17
- 仙境传说重生攻速辅助流铁匠流派如何玩 07-17
- 王者荣耀世界签到册的奖励有哪些 07-17