Оператор 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);
}