array.of 能可靠地将任意参数原样转为数组,避免 new array 的数字歧义问题,天然适配动态参数场景,语义清晰且类型推导准确。

Array.of 在处理函数参数时特别省心,因为它不挑参数数量和类型,直接把所有传进来的值原样塞进数组,不会误判、不玩歧义。
避免单个数字被当成数组长度
很多开发者踩过这个坑:写 new Array(x) 时,如果 x 是数字,结果不是 [x],而是长度为 x 的空数组。而 Array.of(x) 永远返回 [x],不管 x 是 0、100 还是 -5。
-
Array.of(0)→[0](一个含 0 的数组) -
new Array(0)→[](空数组,但逻辑不同) -
Array.of(7)→[7],不是[empty × 7]
天然适配 arguments 或动态参数场景
当函数接收不定数量的参数(比如工具函数、包装器),用 Array.of(...arguments) 或直接 Array.of(a, b, c) 都很稳妥。它不像 Array() 那样需要你提前判断参数个数。
- 函数内写
return Array.of(...args),无论args是[1]还是[null, 'a', {}],输出都符合直觉 - 配合解构或 rest 参数更自然:
function createList(...items) { return Array.of(...items); } - 传入
undefined、null、对象、数组,全都如实保留为元素,不丢失也不变形
语义清晰,提升可维护性
看到 Array.of(x),立刻知道“这就是要把 x 当成一个数组元素”,不用翻文档确认是否要加括号、是否要防止单数字陷阱。这对团队协作和后期重构很友好。
- 替代
Array.prototype.slice.call(arguments)更简洁 - 比
[x]字面量更通用——支持多参数且无需手动判断分支 - 在 TypeScript 中类型推导也更准确,例如
Array.of(1, 's', true)自动推为(number | string | boolean)[]
它不复杂,但确实让参数转数组这件事变得确定、干净、少出错。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











