В этой статье мы собираемся изучить синтаксис с тремя точками (...), который предоставляет JavaScript. Его механизмы и почему они не операторы.

По сути, синтаксис тройной точки используется для нескольких механизмов:

  • Синтаксис Rest для получения данных.
  • Распространение для отправки данных.

Получение данных: синтаксис остальных параметров

Параметр rest — это особый тип параметра, который получает все оставшиеся аргументы вызова функции через массив:

function foo(first, ...rest) { 
  return { first, rest } 
}
foo('a', 'b', 'c');
// { first: 'a', rest: [ 'b', 'c' ] }

Мы также можем использовать оставшийся синтаксис в деструктурировании массива:

const [head, ...tail] = ['a', 'b', 'c'];
head
//'a'
tail
// [ 'b', 'c' ]

И мы можем использовать его для деструктуризации объектов:

const { first: f, ...rest} = {
  first: 'Petter', 
  last: 'Parker', 
  age: 19
};
f
// 'Petter'
rest
// { last: 'Parker', age: 19 }

Отправка данных: оператор спреда

Использование оператора расширения в вызове функции превращает элементы массива в аргументы вызова функции.

function returnArgArray(...args) { 
  return args;
}
returnArgArray(...['x', 'y', 'z']);
//[ 'x', 'y', 'z' ]

Мы также можем распространять массивы на литералы массивов:

[...['a', 'b'], 'c']
// [ 'a', 'b', 'c' ]

И мы можем распространять объекты на литералы объектов:

{...{ a:1, b:2 }, c:3}
// { a: 1, b: 2, c: 3 }

Отдых и распространение не являются операторами

Такие операторы, как + или await, используются для написания независимых выражений, оценивающих значения. Мы можем использовать эти выражения во многих контекстах.

Напротив, отдых и распространение являются частью их окружения. Вот почему их нельзя называть операторами:

  • Синтаксис Rest: остальные параметры (определения функций), остальные элементы (деструктуризация массива), остальные свойства (деструктуризация объектов)
  • При распространении я обычно говорю: «распространение в…» (вызовы функций, литералы массивов, литералы объектов).

Дальнейшее чтение (варианты использования и т. д.)

Синтаксис отдыха:

Распространение:

Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord . Заинтересованы в хакинге роста? Ознакомьтесь с разделом Схема.