📜  声明 JavaScript 数组时,“Array()”和“[]”有什么区别?(1)

📅  最后修改于: 2023-12-03 15:37:50.207000             🧑  作者: Mango

声明 JavaScript 数组时,“Array()”和“[]”有什么区别?

在 JavaScript 中,我们可以使用两种方式来声明一个数组:使用 Array() 构造函数和使用 [] 字面量。

Array() 构造函数

使用 Array() 构造函数创建数组时,我们可以向构造函数传递一个或多个参数,这些参数将成为数组的元素。如果只传递一个参数,则该参数指定数组的长度。

创建一个空数组
let arr = new Array();
创建一个长度为 n 的数组
let arr = new Array(n);
创建一个数组并指定元素
let arr = new Array("apple", "orange", "banana");
[] 字面量

使用 [] 字面量创建数组时,我们不需要传递任何参数。这种方式的语法更加简洁,而且在某些情况下比使用 Array() 构造函数更方便。

创建一个空数组
let arr = [];
创建一个指定元素的数组
let arr = ["apple", "orange", "banana"];
区别

在大多数情况下,使用 Array() 构造函数和使用 [] 字面量是等价的。然而,在以下情况下,它们之间存在了一些细微的区别:

使用 Array() 构造函数创建数组时,如果只传递一个参数且该参数是数字,则该参数将成为数组的长度。
let arr = new Array(3);
console.log(arr); // [undefined, undefined, undefined]

在上面的示例中,我们使用 Array() 构造函数创建了一个包含 3 个元素的数组。由于我们只传递了一个参数且该参数是数字,因此该数字被解释为数组的长度。

使用 [] 字面量创建数组时,如果使用逗号分隔元素,则逗号后面的元素为 undefined
let arr = [1, , 3];
console.log(arr); // [1, undefined, 3]

在上面的示例中,我们使用 [] 字面量创建了一个包含 3 个元素的数组。在第二个元素后面使用了逗号,因此第二个元素为 undefined

总的来说,使用 [] 字面量创建数组更加简洁,但如果需要传递多个参数或者传递一个数字作为数组的长度,则使用 Array() 构造函数会更加方便。