Грешка при мењању елемента низа у JavaScript
Хајде да размотримо грешку која се јавља при погрешном мењању елемента низа. Претпоставимо да имамо следећи низ:
let arr = [1, 2, 3, 4, 5];
Претпоставимо такође да имамо функцију, која као параметар узима број и враћа квадрат тог броја:
function func(num) {
return num ** 2;
}
Хајде да помоћу петље for-of
прођемо кроз наш низ и на сваки
од његових елемената применимо нашу функцију:
for (let elem of arr) {
elem = func(elem);
}
На овом месту почетници често праве
грешку. Ствар је у томе што промена променљиве
elem не доводи до промене елемента
у самом низу. Уверимо се у то:
console.log(arr); // низ се није променио
Низ се не мења због тога
што у променљивој elem чува
копија елемента, а не референца на њега.
Мењање elem утиче на копију,
али не и на сам низ.
За решавање проблема потребно је мењати управо елементе низа:
for (let i = 0; i < arr.length; i++) {
arr[i] = func(arr[i]);
}
console.log(arr); // сада се низ променио