array.of 自 es6 起行为完全固定且稳定,后续标准未作任何修改;其核心是将所有参数原样转为数组元素,无类型判断、不推断长度、不区分参数个数,始终成功返回数组,引擎实现统一无差异。

Array.of 自 ES6(ECMAScript 2015)正式标准化起,行为就完全固定且稳定,后续所有标准(ES2016 至 ES2025)均未对其语义、参数处理逻辑或返回结果做任何修改。
ES6 确立核心行为
ES6 首次定义 Array.of() 为静态方法,明确其唯一职责:将传入的**所有参数原样转为数组元素**,不作类型判断、不推断长度、不区分单参数或多参数。这一设计就是为消除 Array() 构造函数的歧义,因此从诞生起就具备强一致性:
- Array.of(5) → [5](不是长度为 5 的空数组)
- Array.of(0) → [0](0 不被特殊处理)
- Array.of('a', null, {}) → ['a', null, {}]
- Array.of() → [](无参时返回空数组)
后续标准仅维持兼容性
ES2016 及之后版本(包括 ES2020、ES2022、ES2024、ES2025)均将 Array.of 列为“不可变更的规范特性”。它没有新增重载、不扩展参数语义、不改变错误处理方式(例如不抛错,始终成功返回数组)。TC39 会议记录和各版规范文本中,从未提议或批准对 Array.of 行为的调整。
引擎实现早已统一
主流 JavaScript 引擎(V8、SpiderMonkey、JavaScriptCore)在 ES6 发布后一年内即完成完整、一致的实现。截至 2026 年,所有支持 ES6 的环境(Chrome 45+、Firefox 41+、Safari 9+、Node.js 4.0+)对 Array.of 的执行结果完全相同,不存在跨平台差异或条件分支逻辑。
与 Array() 的对比凸显稳定性
Array() 构造函数的行为在规范中仍保留历史逻辑(单数字参数 → 长度),而 Array.of 被刻意设计为“零歧义替代方案”——这种定位使其天然排斥变动。规范明确要求其实现必须严格遵循“参数即元素”原则,连 polyfill 都只需一行:Array.prototype.slice.call(arguments) 或 [...arguments],进一步说明其底层逻辑极简且稳固。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











