Array.of() 用于创建包含指定元素的新数组,行为一致,避免了 Array 构造函数在处理单个数字参数时的歧义问题。例如 Array(5) 会创建长度为 5 的空数组,而 Array.of(5) 则返回 [5]。它适用于动态创建数组、函数式编程及封装数组创建逻辑,提升代码可预测性和健壮性。现代浏览器普遍支持,老环境可通过 Array.from(arguments) 或 […arguments] 模拟实现。

Array.of() 是 javaScript 中用于创建新数组的一个静态方法。它能根据传入的任意数量和类型的参数,创建一个具有指定元素的新数组。与 Array 构造函数相比,Array.of() 的行为更一致,尤其是在处理单个数值参数时。
解决 Array 构造函数的歧义问题
在使用 new Array() 或 Array() 时,如果只传入一个数字参数,它会被解释为数组的长度,而不是元素:
Array(5); // 创建一个长度为 5、空元素的数组
Array(1); // 创建长度为 1 的空数组
Array(0); // 空数组
而 Array.of() 不会这样。它总是把参数当作元素来处理:
Array.of(5); // [5]
Array.of(1, 2, 3); // [1, 2, 3]
Array.of(‘hello’); // [‘hello’]
Array.of(); // [] 空数组(无参数)
实际使用场景
当你需要动态创建数组,并且参数可能来自变量或函数返回值时,Array.of() 能避免意外行为:
const id = 42;
const arr = Array.of(id); // [42],不会创建长度为 42 的空数组
兼容性与替代方案
Array.of() 是 es6 引入的,现代浏览器基本都支持。如果需要兼容老环境,可以用:
function arrayOf() {
return Array.prototype.slice.call(arguments);
}
或者更简洁地:
[…arguments] 或 Array.from(arguments)
基本上就这些。Array.of 的作用虽小,但在防止边界错误上很有价值,特别是你不确定参数数量或类型的时候。用它能写出更 predictable(可预测)的代码。