使用展开语法 (Spread syntax) 的好处是什么? 它与剩余语法 (Rest syntax) 有何不同?
Topics
JavaScript
在GitHub上编辑
ES2015 的展开语法在函数式范式的编码中非常有用,因为我们可以很容易地创建数组或对象的副本,而不需要借助于Object.create
、slice
或库函数。 此语言功能经常用于 Redux 和 RxJS 项目。
function putDookieInAnyArray(arr) {return [...arr, 'dookie'];}const result = putDookieInAnyArray(['I', 'really', "don't", 'like']); // ["I", "really", "don't", "like", "dookie"]const person = {name: 'Todd',age: 29,};const copyOfTodd = { ...person };
ES2015 的剩余语法提供了一个短语,用于包含任意数量的参数传递给函数。 它就像展开语法的倒数,把数据塞进一个数组,而不是把一个数组的数据拆开,它在函数参数中起作用,也在数组和对象的去结构化赋值中起作用。
function addFiveToABunchOfNumbers(...numbers) {return numbers.map((x) => x + 5);}const result = addFiveToABunchOfNumbers(4, 5, 6, 7, 8, 9, 10); // [9, 10, 11, 12, 13, 14, 15]const [a, b, ...rest] = [1, 2, 3, 4]; // a: 1, b: 2, rest: [3, 4]const { e, f, ...others } = {e: 1,f: 2,g: 3,h: 4,}; // e: 1, f: 2, others: { g: 3, h: 4 }