В этой статье мы собираемся изучить синтаксис с тремя точками (...
), который предоставляет 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 . Заинтересованы в хакинге роста? Ознакомьтесь с разделом Схема.