ES2018: Object Rest/Spread Properties

分享链接:v8.dev/features/object-rest-spread

三点运算符 ... 在 JavaScript 中是个非常奇妙的存在。根据使用场景不同,它有两种功能:作为扩展运算符,或作为剩余参数。

ES2015 率先为数组加入了对三点运算符的支持,实现了:

  1. 解构赋值时,收集剩余成员
  2. 在数组字面量中,展开数组
// rest 变量收集 primes 数组没被接收的剩余成员 
const primes = [2, 3, 5, 7, 11];
const [first, second, ...rest] = primes;
console.log(first); // 2
console.log(second); // 3
console.log(rest); // [5, 7, 11]

// 展开 rest 数组,赋值给 primesCopy
const primesCopy = [first, second, ...rest];
console.log(primesCopy); // [2, 3, 5, 7, 11]

三年后,ES2018 中也为对象加入了三点运算符的支持,实现了:

  1. 解构赋值时,收集剩余属性
  2. 在对象字面量中,展开对象
const person = {
    firstName: 'Sebastian',
    lastName: 'Markbåge',
    country: 'USA',
    state: 'CA',
};
// rest 变量收集 person 对象没被接收的剩余属性 
const { firstName, lastName, ...rest } = person;
console.log(firstName); // Sebastian
console.log(lastName); // Markbåge
console.log(rest); // { country: 'USA', state: 'CA' }

// 展开 rest 对象,赋值给 personCopy
const personCopy = { firstName, lastName, ...rest };
console.log(personCopy);
// { firstName: 'Sebastian', lastName: 'Markbåge', country: 'USA', state: 'CA' }

(完)

讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!