Что такое оператор спреда? Каково использование оператора спреда? Как использовать оператор распространения в коде JavaScript?

оператор расширения, синтаксис расширения или 3 точки (…) — это тип синтаксиса в JavaScript, который используется как при вызовах функций, так и в массивы/объекты. Он имеет множество различных применений, поэтому давайте посмотрим, как мы используем синтаксис распространения в реальном коде JavaScript.

В вызовах функций

Мы можем использовать 3 точки в вызовах функций JavaScript, чтобы преобразовать массив в набор аргументов для функции. Давайте посмотрим на пример. Ниже наш массив преобразуется в значения для x, y, z и a.

let numbers = [ 1, 2, 3, 4 ];
let myFunction = function(x, y, z, a) {
    return x + y + z + a;
}
// Returns 10
myFunction(...numbers);

Это можно комбинировать с другими значениями, поэтому следующее также допустимо, используя ту же функцию, что и раньше:

let numbers = [ 1, 2 ];
// Returns 15 (i.e. 5 + 7 + 1 + 2)
myFunction(5, 7, ...numbers);

Это также можно использовать при вызове конструктора с new, например:

let numbers = [ 1999, 26, 3 ];
let thisDate = new Date(...number);

Объединение массивов

Еще один полезный способ использования синтаксиса распространения — это объединение массивов. Например, мы можем объединить два отдельных массива в новый, используя два синтаксиса расширения:

let x = [ 1, 2, 3 ];
let y = [ 4, 5, 6 ];
// Returns [ 1, 2, 3, 4, 5, 6 ]
let newArray = [ ...x, ...y ];

Как и раньше, мы можем комбинировать это с другими значениями и все равно получить тот же результат:

let x = [ 1, 2 ];
// Returns [] 4, 5, 1, 2 ]
let newArray = [ 4, 5, ...x ];

Объединить объекты

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

let obj1 = { name: "John" };
let obj2 = { age: 114 };
// Returns { name: "John", age: 114 }
let newObj = { ...obj1, ...obj2 };

Если мы попытаемся объединить два объекта и есть дублирующийся ключ, второй объект будет иметь приоритет и перезапишет первый, как показано ниже:

let obj1 = { name: "John" };
let obj2 = { name: "Jake" };
// Returns { name: "Jake" }
let newObj = { ...obj1, ...obj2 };

Вот как работает расширенный синтаксис — он позволяет нам легко запускать функции с массивами и хорош для слияния объектов и массивов. Вы можете найти больше руководств по JavaScript внизу этой страницы.

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