JavaScript-də rest operatoru
Bu dərsi bir açıqlama ilə başlayaq.
Bu bölmənin bütün əvvəlki dərslərində mən
sizə ... operatoru haqqında bütün həqiqəti
deyərmədim.
Əslində bu operator kodda yerləşdiyi yerdən asılı olaraq ya spread operatoru, ya da rest operatoru adlana bilər.
Artıq bildiyiniz kimi, spread operatoru
massiv və ya sətirin qarşısında duranda, onları
ayrı-ayrı dəyərlərə ayırır. Rest operatoru,
baxmayaraq ki, ... şəklində eyni sintaksisə
malikdir, amma başqa məqsəd üçün nəzərdə tutulub.
İndi onun nə üçün olduğunu anlayaq. Tutaq ki, bizim iki parametr qəbul edən funksiyamız var:
function func(a, b) {
console.log(a);
console.log(b);
}
Artıq bilməlisiniz ki, əgər funksiyaya artıq parametrlər ötürülərsə, bu xətaya səbəb olmaz:
func(1, 2, 3, 4, 5);
Rest operatoru bütün artıq parametrləri
massiv şəklində əldə etməyə imkan verir. Bunun üçün
funksiyaya bir parametr daha əlavə olunur (mütləq
sonuncu olaraq), onun qarşısında 3 nöqtə yazılır:
function func(a, b, ...rest) {
}
Bu üç nöqtə rest operatorudur və dəyişənin adı
istənilən ola bilər, amma
adətən onu rest adlandırırlar.
Gəlin funksiyamızı artıq
miqdarda parametrlə çağıraq və görək nəyin
a və b parametrlərinə, nəyin isə
rest qalığına düşdüyünə baxaq:
func(1, 2, 3, 4, 5);
function func(a, b, ...rest) {
console.log(a); // 1 çap edəcək
console.log(b); // 2 çap edəcək
console.log(rest); // [3, 4, 5] çap edəcək
}
Əgər artıq parametr olmasa, onda dəyişən
rest boş massivlə doldurular:
func(1, 2);
function func(a, b, ...rest) {
console.log(a); // 1 çap edəcək
console.log(b); // 2 çap edəcək
console.log(rest); // [] çap edəcək
}
Funksiyada ümumiyyətlə parametr olmaya da bilər,
amma eyni zamanda ona rest əlavə etmək olar.
Bu halda funksiyanı
istənilən sayda parametrlə çağırmaq olar və onların hamısı
rest massivinə düşəcək:
function func(...rest) {
console.log(rest);
}