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