JavaScript创建数组最推荐两种方式:一是方括号字面量(如[]、[1,"hello",true]),简洁安全无歧义;二是Array()构造函数(仅用于Array()或Array(1,2,3)),需警惕Array(5)创建空数组的陷阱。

用方括号字面量(最常用)
这是绝大多数开发者首选的方式,语法直观,性能好,语义清晰。直接写中括号 [],里面放元素,用逗号分隔:
-
let arr1 = [];—— 创建空数组 -
let arr2 = [1, "hello", true, null];—— 混合类型,一次初始化 -
let arr3 = [1, , 3];—— 允许留空位(索引1为 empty,不是undefined)
注意:这种写法不会因传入单个数字而误创建指定长度的数组,避免了构造函数的歧义问题。
用 Array() 构造函数(需谨慎使用)
它有三种调用形式,行为差异大,容易踩坑:
-
new Array()或Array()—— 创建空数组,安全 -
new Array(1, 2, 3)—— 创建含三个元素的数组[1, 2, 3] -
new Array(5)—— 创建长度为 5 的空数组,所有位置都是empty(不是undefined),length是 5
⚠️ 关键陷阱:传一个数字参数时,会被解释为数组长度,而不是数组元素。比如 new Array(3) 不是 [3],而是 [empty × 3]。
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
立即学习“Java免费学习笔记(深入)”;
其他辅助方法(按需选用)
ES6+ 提供了更明确、更安全的替代方案:
-
Array.of(3)→[3],不会把单个数字当长度 -
Array.from({ length: 3 }, (_, i) => i)→[0, 1, 2],适合从类数组或映射生成 -
Array.from("abc")→["a", "b", "c"],把可迭代对象转成数组
这些方法语义明确,无歧义,适合需要精确控制的场景。
不推荐的写法
像 var a = new Array(); 这种带 var 和冗余 new 的老式写法,现代开发中基本不用。既不够简洁,又容易和上面的歧义用法混淆。

















