Array.of()的核心特点是“参数即元素”,无论参数类型、数量或是否为空,均原样转为数组元素;与Array()不同,Array.of(5)返回[5]而非长度为5的稀疏数组,且无重载、行为可预测。

Array.of() 的核心特点是“参数即元素”——不管传进来的是数字、字符串、对象、undefined,还是多个、单个、甚至没有参数,它都一律把它们原样放进新数组里,不搞特殊解释。
所有参数都当作数组元素,包括数字
这是它和 Array() 构造函数最根本的区别。当只传一个数字时:
-
Array(5)→ 创建长度为 5 的稀疏数组:[<5 empty items>] -
Array.of(5)→ 创建含一个数字元素的数组:[5]
哪怕这个数字是 0、1、-1 或 NaN,结果也一样是单元素数组。
支持任意类型和混合类型参数
字符串、布尔值、null、undefined、对象、函数、Symbol,全都能直接作为元素:
立即学习“Java免费学习笔记(深入)”;
-
Array.of("hello", true, null)→["hello", true, null] -
Array.of(undefined)→[undefined](注意:不是空槽,是真实值) -
Array.of({x: 1}, [1,2], /test/)→ 包含对象、数组、正则的数组
参数数量不影响行为逻辑
零个、一个、多个参数,处理方式完全一致:
-
Array.of()→[](空数组) -
Array.of("a")→["a"] -
Array.of(1, "b", false)→[1, "b", false]
不像 Array() 那样在单参数时“猜意图”,Array.of() 没有重载,没有歧义,行为可预测。
兼容性与轻量替代方案
ES6 标准方法,现代浏览器全覆盖。若需支持极老环境(如 IE),可用以下等效写法:
Array.prototype.slice.call(arguments)Array.from(arguments)-
[...arguments](ES6+ 展开语法)
但这些主要用于模拟;日常开发中,直接用 Array.of() 更简洁、语义更清晰。


















