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