Fout by die verandering van 'n array-element in JavaScript
Kom ons kyk na 'n fout wat voorkom wanneer 'n element van 'n array verkeerdelik verander word. Gestel ons het die volgende array:
let arr = [1, 2, 3, 4, 5];
Gestel ons het ook 'n funksie wat 'n getal as parameter aanvaar en die kwadraat van daardie getal teruggee:
function func(num) {
return num ** 2;
}
Kom ons gebruik 'n for-of lus
om deur ons array te itereer en ons funksie
op elk van sy elemente toe te pas:
for (let elem of arr) {
elem = func(elem);
}
Hier is waar beginners dikwels 'n
fout maak. Die probleem is dat die verandering van die veranderlike
elem nie lei tot 'n verandering van die element
in die array self nie. Kom ons verifieer dit:
console.log(arr); // array het nie verander nie
Die array verander nie omdat
die veranderlike elem 'n
kopie van die element bevat,
en nie 'n verwysing daarna nie.
Om elem te verander, beïnvloed die kopie,
maar nie die array self nie.
Om die probleem op te los, moet ons presies die elemente van die array verander:
for (let i = 0; i < arr.length; i++) {
arr[i] = func(arr[i]);
}
console.log(arr); // nou het die array verander