array.of() 总是将参数作为数组元素,new array() 在单个数字参数时创建指定长度的空数组;二者多参数时结果相同,但 array.of() 行为一致、语义明确、更安全可靠。

核心区别就一句话:Array.of() 把所有参数都当数组元素,new Array() 在只有一个数字参数时会当成数组长度——这容易出错。
参数为单个数字时的行为完全不同
这是最常踩坑的地方:
-
new Array(5) → 创建长度为 5 的空数组:
[empty × 5],索引 0 到 4 都是未定义的空位 -
Array.of(5) → 创建包含一个元素的数组:
[5]
多参数或混合类型时表现一致,但语义更清晰
两者都能正常处理多个值,但 Array.of() 的意图一目了然:
-
new Array('a', 2, true)和Array.of('a', 2, true)都返回['a', 2, true] - 但 new Array() 的行为依赖参数个数和类型,而 Array.of() 始终只做一件事:把参数原样变成数组元素
支持 null、undefined 和复杂对象,无例外
无论传什么,Array.of() 都不会“误判”:
-
Array.of(null)→[null] -
Array.of(undefined, {x:1}, [1,2])→[undefined, {x:1}, [1,2]] - new Array() 虽然也能处理这些(非数字单参数),但逻辑不统一,靠记忆判断,容易混淆
无参数调用结果相同,但更安全可靠
两者都返回空数组 [],但 Array.of() 的一致性让它更适合写工具函数或处理动态参数:
-
Array.of()和new Array()都是[] - 当你不确定参数数量(比如从函数 rest 参数展开),用 Array.of(...args) 不用担心数字被误解释为长度
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











