JavaScript'te Dizi Elemanı Değiştirme Hatası
Bir dizi elemanını yanlış değiştirirken ortaya çıkan hatayı inceleyelim. Şu şekilde bir dizimiz olduğunu varsayalım:
let arr = [1, 2, 3, 4, 5];
Ayrıca, parametre olarak bir sayı alan ve bu sayının karesini döndüren bir fonksiyonumuz olsun:
function func(num) {
return num ** 2;
}
Şimdi for-of döngüsü kullanarak
dizimizi gezelim ve her bir elemana
fonksiyonumuzu uygulayalım:
for (let elem of arr) {
elem = func(elem);
}
Yeni başlayanlar sıklıkla bu noktada hata yapar.
Sorun şu ki, elem değişkenini değiştirmek,
dizideki elemanın kendisini değiştirmez.
Bunu doğrulayalım:
console.log(arr); // dizi değişmedi
Dizinin değişmemesinin nedeni,
elem değişkeninin elemanın bir kopyasını
tutması, ona bir referans olmamasıdır.
elem'i değiştirmek kopyayı etkiler,
ancak dizinin kendisini etkilemez.
Sorunu çözmek için dizinin elemanlarını doğrudan değiştirmek gerekir:
for (let i = 0; i < arr.length; i++) {
arr[i] = func(arr[i]);
}
console.log(arr); // şimdi dizi değişti