⊗jsPmROInr 294 of 505 menu

Оператор rest в JavaScript

Този урок ще започнем с известно пояснение. Всички предишни уроци в този раздел аз не ви казах цялата истина за оператора ...

Всъщност този оператор, в зависимост от мястото му в кода, може да се нарича или оператор spread, или оператор rest.

Както вече знаете, когато операторът spread стои пред масив или низ, той ги разделя на отделни стойности. Операторът rest, въпреки че има същия синтаксис като ..., е предназначен за друго.

Сега ще разберем за какво. Нека да имаме функция, която приема два параметъра:

function func(a, b) { console.log(a); console.log(b); }

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

func(1, 2, 3, 4, 5);

Операторът rest позволява всички допълнителни параметри да бъдат получени под формата на масив. За целта във функцията се добавя още един параметър (задължително последен), пред който се поставят 3 точки:

function func(a, b, ...rest) { }

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

Нека извикаме нашата функция с излишен брой параметри и да видим какво попада в параметрите a и b, и какво - в остатъка rest:

func(1, 2, 3, 4, 5); function func(a, b, ...rest) { console.log(a); // извежда 1 console.log(b); // извежда 2 console.log(rest); // извежда [3, 4, 5] }

Ако няма допълнителни параметри, то в променливата rest ще се запише празен масив:

func(1, 2); function func(a, b, ...rest) { console.log(a); // извежда 1 console.log(b); // извежда 2 console.log(rest); // извежда [] }

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

function func(...rest) { console.log(rest); }
Български
AfrikaansAzərbaycanবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне