JavaScript-də for-in döngüsü ilə massivin gəzmə xətası
Massivi gəzmək üçün
for-of döngüsündən
istifadə etmək lazımdır.
Buna baxmayaraq, bəzən yeni başlayanlar səhvən
for-in döngüsünü tətbiq etməyə çalışırlar.
Gəlin bu xətanın xarakterik əlamətlərinə
baxaq.
Tutaq ki, bizim bir massivimiz var:
let arr = ['a', 'b', 'c'];
Gəlin bu massivin elementlərini gəzib onları bir sətirdə yazaq.
Müəyyən bir proqramçı bu problemi artıq həll edib,
amma səhvən for-in döngüsündən
istifadə edib. Gəlin onun nə əldə etdiyinə
baxaq:
let res = '';
for (let elem in arr) {
res += elem;
}
console.log(res); // '012' çap edəcək
Beləliklə, nəticədə 'abc' yox,
'012' sətri alınır. Gəlin bunun niyə
baş verdiyini anlayaq.
Ümumiyyətlə, massiv niyə for-in
döngüsü ilə gəzilə bildi? Məsələ ondadır ki,
JavaScript-də massiv obyektin xüsusi bir
növüdür. Buna görə də əslində
bu baxımdan bu korrekt koddur. Amma belə etmək
tövsiyə edilmir.
Məsələ ondadır ki, for-in
müəyyən şəraitdə artıq olanı "yapışdıra" bilər,
və siz massivin elementlərindən əlavə
gəzmə zamanı bir az da parazit bir şey əldə edə bilərsiniz.
Massivləri yalnız for-of ilə gəzin.
Gəlin indi anlayaq ki, niyə biz belə
qəribə nəticə görürük. Məsələ ondadır,
ki for-in ilə gəzmə zamanı
elem dəyişəninə əslində
açarlar (indekslər) düşür, bu dəyişənin
adının səfeh salmasına baxmayaraq.
Gəlin edilmiş xətanı düzəldək və korrekt kodu yazaq:
let arr = ['a', 'b', 'c'];
let res = '';
for (let elem of arr) {
res += elem;
}
console.log(res); // 'abc' çap edəcək