优先使用数组字面量[],因其行为一致、类型安全、性能更优;new Array()在单参数时易混淆为长度而非元素,且隐式转换逻辑混乱,仅在明确需要稀疏数组时谨慎使用。

JavaScript中用[]创建数组和用new Array()创建数组,行为并不总是一致,尤其在单个参数时容易出错。
单参数情况:字面量始终创建含一项的数组,构造函数则可能创建指定长度的空数组
当传入一个数字参数时,Array构造函数会将其解释为数组长度,而非数组元素:
-
[5]→ 数组[5](含一个数字元素) -
new Array(5)→ 数组[empty × 5](长度为5,但所有位置都是空槽,没有实际元素) -
new Array(1, 2, 3)→[1, 2, 3](多个参数时,才作为元素值)
类型安全与可预测性:字面量更直观,构造函数易引发隐式转换歧义
Array构造函数对参数类型不敏感,可能触发意外行为:
-
new Array("hello")→["hello"](字符串被当作元素) -
new Array({})→[{}](对象也被当作元素) - 但
new Array(null)→[null],而new Array(undefined)→[undefined],表面一致,实则逻辑混杂 - 相比之下,
["hello"]、[{}]、[null]、[undefined]含义清晰统一
性能与可读性:字面量更轻量,也更符合现代代码习惯
引擎对字面量有深度优化,且语法简洁明确:
立即学习“Java免费学习笔记(深入)”;
-
[]比new Array()少写5个字符,无括号嵌套,不易拼错 - ES6+新增的扩展运算符、解构、数组方法(如
Array.from)都默认配合字面量使用 - 若真需创建指定长度的稀疏数组(如初始化缓冲区),应显式说明意图,例如:
Array.from({ length: 5 })或new Array(5).fill(undefined)
日常开发中优先使用数组字面量,仅在极少数需要动态长度且明确接受稀疏结构的场景下才谨慎考虑Array构造函数。










