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)
与第二个定义相比,第一个定义实现了什么?
两种创建数组的方法是不同的。它们不会产生相同的结果。
创建数组的第二种方法将创建一个只有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)