Въведение в оператора на разпръскване и параметъра за почивка в JavaScript (ES6)

Както операторът на разпръскване, така и останалите параметри се записват като три последователни точки (…). Имат ли нещо друго общо?

източник

Оператор за разпространение (...)

Операторът за разпространение беше представен в ES6. Предоставя ви възможност да разгънете итерабелни обекти в множество елементи. Какво всъщност означава? Нека проверим някои примери.

const movies = ["Леон", "Всъщност любовта", "Властелинът на пръстените"];
console.log (... филми);

разпечатки:

Любовта на Леон Всъщност Властелинът на пръстените
const номера = нов набор ([1, 4, 5, 7]);
console.log (... номера);

разпечатки:

1 4 5 7

Може да забележите, че както масивът от първия пример, така и наборът от втория са разширени в техните отделни елементи (съответно низове и цифри). Как може да ви бъде от полза, може да попитате.

Най-честата употреба вероятно е комбиниране на масиви. Ако някога е трябвало да правите това във времената преди оператора на разпространение, вероятно сте използвали метода concat ().

const shape = ["триъгълник", "квадрат", "кръг"];
const objects = ["молив", "тефтер", "ластик"];
const хаос = shape.concat (обекти);
console.log (хаоса);

разпечатки:

[„Триъгълник“, „квадрат“, „кръг“, „молив“, „тетрадка“, „ластик“]

Това не е много лошо, но това, което предлага операторът на разпространение, е пряк път, който прави и вашия код да изглежда много по-четим:

const хаос = [... форми, ... обекти];
console.log (хаоса);

разпечатки:

[„Триъгълник“, „квадрат“, „кръг“, „молив“, „тетрадка“, „ластик“]

Ето какво бихме получили, ако се опитаме да направим същото без оператора за разпространение:

const хаос = [форми, обекти];
console.log (хаоса);

разпечатки:

[Масив (3), Масив (3)]

Какво е станало тук? Вместо да комбинираме масивите, получихме масив хаос с масива от форми в индекс 0 и обектите масив в индекс 1.

източник

Параметър за останалите (...)

Можете да мислите за параметъра почивка като обратното на оператора на разпространение. Точно както операторът на разпространение ви позволява да разширите масив в неговите отделни елементи, параметърът за останалите ви позволява да групирате елементи обратно в масив.

Присвояване на стойности на масив на променливи

Нека да разгледаме следния пример:

const movie = ["Животът на Брайън", 8.1, 1979, "Греъм Чапман", "Джон Клиз", "Майкъл Пейлин"];
const [заглавие, рейтинг, година, ... актьори] = филм;
console.log (заглавие, рейтинг, година, актьори);

разпечатки:

„Животът на Брайън“, 8.1, 1979 г., [„Греъм Чапман“, „Джон Клиз“, „Майкъл Пейлин“]

Останалият параметър нека да вземем стойностите на филмовия масив и да ги присвоим на няколко индивидуални променливи, използвайки разрушаването. По този начин заглавие, рейтинг и година се присвояват първите три стойности в масива, но там, където се случва истинската магия, са актьорите. Благодарение на параметъра почивка, актьорите получават останалите стойности на филмовия масив под формата на масив.

Вариадични функции

Вариадичните функции са функции, които вземат неопределен брой аргументи. Един добър пример е функцията sum (): не можем да знаем предварително колко аргументи ще бъдат предадени на нея:

сума (1, 2);
сума (494, 373, 29, 2, 50067);
сума (-17, 8, 325900);

В по-ранните версии на JavaScript този вид функция ще се обработва с помощта на аргумента обект, който е подобен на масив обект, достъпен като локална променлива във всяка функция. Той съдържа всички стойности на аргументи, предадени на функция. Нека да видим как може да бъде приложена функцията sum ():

функция сума () {
  нека общо = 0;
  за (const аргумент на аргументи) {
    общо + = аргумент;
  }
  обща възвръщаемост;
}

Действа, но е далеч от перфектното:

  • Ако погледнете дефиницията за функцията sum (), тя няма параметри. Може да бъде доста подвеждащо.
  • Може да е трудно да разбереш, ако не си запознат с обекта на аргументите (както в: откъде са по дяволите аргументите ?!)

Ето как бихме написали същата функция с останалите параметри:

функция сума (... числа) {
  нека общо = 0;
  за (const число от числа) {
    общо + = число;
  }
  обща възвръщаемост;
}

Обърнете внимание, че цикълът за ... in е заменен с цикъл за ... на цикъл. Направихме кода си по-читав и кратък наведнъж.

Hallelujah ES6!

Започвате ли само пътуването си с програмиране? Ето някои статии, които биха могли да ви заинтересуват също:

  • Дали кодиращият буткамп е нещо за вас?
  • Възможна ли е промяна в кариерата наистина?
  • Защо Ruby е чудесен език, с който да започнете да програмирате