array.of 创建单元素数组时行为明确:无论参数类型如何(数字、字符串、null、undefined、对象等),均直接作为唯一元素,如 array.of(42) → [42],避免了 array(42) 创建长度为 42 的空数组的歧义。

Array.of 创建单元素数组时,行为明确且无歧义:无论传入的参数是什么类型(数字、字符串、null、undefined、对象等),它都直接将其作为唯一元素放入新数组中。
核心规范:参数即元素
Array.of 的设计初衷就是消除 Array 构造函数对单个数字参数的特殊解释。它不区分参数类型或数量,所有传入值一律视为数组元素:
- Array.of(42) → [42](不是长度为 42 的空数组)
- Array.of("hello") → ["hello"]
- Array.of(null) → [null]
- Array.of(undefined) → [undefined]
- Array.of({a:1}) → [{a:1}]
与 Array() 构造函数的关键区别
这是最易出错的地方。单参数场景下二者行为完全相反:
- Array(42) 创建的是长度为 42 的稀疏数组:[]
- Array.of(42) 创建的是含一个数字元素的数组:[42]
- 只有当参数数量 ≥ 2 或唯一参数非数字时,Array() 才表现一致(如 Array("42") → ["42"])
空数组与边界情况处理
Array.of 对无参或特殊输入同样保持语义统一:
- Array.of() 返回空数组:[]
- Array.of(NaN) → [NaN]
- Array.of(0) → [0](不是空数组,也不是长度为 0 的数组)
- Array.of(-5) → [-5](负数也作为元素,不触发异常)
适用场景建议
当你需要从变量、函数返回值或不确定来源构造数组时,Array.of 是更安全的选择:
- 动态封装单值:
const id = getUserId(); const arr = Array.of(id); - 避免条件判断:
Array.of(value)比Array.isArray(value) ? value : [value]更简洁 - 函数式编程中作为高阶函数参数:
map(Array.of)可将每个值转为单元素数组
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











