Въведение в разпространението на синтаксиса в JavaScript

Какво е това и защо се нуждаем от него?

Синтаксисът на разпространението е въведен в спецификацията ES6 на JavaScript. Оттогава се оказа ценна част от кода, което прави кода чист и лесен за разбиране.

MDN определя ... като:

Разпръснатият синтаксис позволява разширяване на итеративен текст, като израз на масив или низ на места, където се очакват нула или повече аргументи (за извиквания на функции) или елементи (за литерали на масиви), или израз на обект да бъде разширен на места, където нула или повече очакват се двойки ключ-стойност (за обектни литерали).

Нека всички се съгласим, че горното определение е шепа и никой от нас не е хванал дума, която се опитва да каже. Затова нека започнем с най-основните неща за синтаксиса на разпространението.

  • Операторът за разпространение е само 3 точки ...
  • Може да се използва за итерации като масив или низ.
  • Той разширява итерация до отделните си елементи
  • Той може да осигури извикване на функция с масив (или друг итерабилен), където се очакват 0 или повече аргумента.

Пример

Долният фрагмент съдържа функция, наречена sum, която очаква 3 аргумента x, y и z. Имаме масив с 3 елемента и искаме да предадем елементите в масива като аргументи за функцията.

Преди да бъде въведен операторът за разпространение, това беше направено чрез функцията за прилагане.

След въвеждането на оператора за разпространение може да се направи много просто:

Както се вижда от горния фрагмент с оператора за разпространение, не е нужно да използваме функцията apply. Това ни спестява от писането на повече код.

Горният пример дава много груба и кратка представа за оператора за разпространение. Първо, нека да влезем в повече подробности относно същото, а след това ще видим още примери.

Синтаксис

Операторът за разпространение може да се използва по много начини и сценарии като

  • Вътрешни извиквания на функции

Когато се използва в горния сценарий, се нарича параметър за почивка. Ще видим примери, свързани с това, в раздела за примери.

  • Създаване / разширяване на масив / итерируем:

Примери

  • Като почивка

... се използва като аргумент за вариадична функция. Вариадичната функция е функция, която може да има променлив брой параметри.

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

Още нещо, което трябва да се отбележи, е, че няма конкретен брой параметри, споменати в дефиницията на функцията. Това означава да се използва ... функцията може да има n броя аргументи. Не е необходимо предварително да задаваме параметрите.

Това е особено много гъвкав начин за получаване на аргументи за функция, за която конкретният брой аргументи не е определен като функциите Math.max и Math.min. Те са вариадични функции, тъй като броят на входовете може да бъде безкраен за тях.

Върнете се към примера, за да получите сумата от всички аргументи

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

  • Натиснете елементи в масив

Функцията push () се използва за изтласкване на елементи в масив. Ограничението с тласък е, че трябва да бутаме елементи един по един (тласък (1,2,3)). Ако има масив, чиито елементи трябва да бъдат вмъкнати в масива с помощта на push, ще получим многомерен масив, който не сме поискали.

Отново се прилага за спасяване

Както виждаме, че използването на apply не изглежда много елегантно и за това се нуждаем от прост и малък синтаксис. Нека използваме спред ...

Елегантен!

  • Копиране на масив

Просто!

Същият резултат може да се получи с помощта на обект

  • Обединяване на 2 масива

Конкатенацията се извършва с помощта на функцията concat

Същото може да се постигне с помощта на ... оператора

  • Преобразуване на низ в масив

Това може да се направи, като се използва както функцията за разделяне, така и операторът ...

  • Използвайте в функции max и min

Долният фрагмент има тенденция да намери максималния елемент в масива, така че предаваме целия масив във функцията, но получаваме резултата като NaN

Можем да използваме apply, но както се вижда от предишните примери, мразя да го използвам

Същото за мин

Заключение

Видяхме много ситуации, при които операторът за разпространение е полезен и намалява нашия код, а също го прави супер лесен за разбиране.

Ако ви харесва Clap? и да следвате? за още.