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