使用扩展语法创建数组

use*_*399 5 javascript arrays spread-syntax

这是我在 React 书中找到的一个 JavaScript 箭头函数:

const createArray = (length) => [...Array(length)];
Run Code Online (Sandbox Code Playgroud)

为什么不简单地返回一个新数组呢?

const createArray = (length) => Array(length);
Run Code Online (Sandbox Code Playgroud)

createArray(7)如果我使用任一定义记录结果,我会得到相同的结果:

(7) [undefined, undefined, undefined, undefined, undefined, undefined, undefined]
Run Code Online (Sandbox Code Playgroud)

与第二个定义相比,第一个定义实现了什么?

You*_*saf 2

两种创建数组的方法是不同的。它们不会产生相同的结果。

创建数组的第二种方法将创建一个只有length自己的属性而没有索引属性的稀疏数组。你可以看到这个使用Object.getOwnPropertyNames()

const arr = new Array(5);
console.log(Object.getOwnPropertyNames(arr));
Run Code Online (Sandbox Code Playgroud)

使用扩展语法将创建一个数组,该数组将索引属性,如以下代码示例所示:

const arr = [...new Array(5)];
console.log(Object.getOwnPropertyNames(arr));
Run Code Online (Sandbox Code Playgroud)