Fout met die iterasie van 'n array met 'n for-in lus in JavaScript
Om 'n array te itereer, moet jy
die for-of lus gebruik.
Soms, egter, probeer beginners per abuis
om die for-in lus toe te pas.
Kom ons kyk na die kenmerkende tekens
van hierdie fout.
Gestel ons het 'n array:
let arr = ['a', 'b', 'c'];
Kom ons itereer die elemente van hierdie array en skryf hulle in een string.
'n Sekere programmeerder het hierdie taak reeds opgelos,
maar het per abuis die for-in lus
gebruik. Kom ons kyk wat hy gekry het:
let res = '';
for (let elem in arr) {
res += elem;
}
console.log(res); // sal '012' uitvoer
Dus, die resultaat is die string '012',
en nie 'abc' nie. Kom ons uitvind hoekom
dit gebeur het.
Hoekom het die array enigsins geïtereer
deur die for-in lus? Die feit is dat
'n array in JavaScript 'n spesiale
geval van 'n objek is. Dus, eintlik
is dit korrekte kode in hierdie opsig. Maar jy moet dit
nie doen nie.
Die feit is dat for-in
onder sekere toestande ekstra dinge kan vang,
en jy kan, behalwe die array-elemente,
ook iets parasities kry tydens die iterasie.
Itereer arrays slegs met for-of.
Kom ons vind nou uit hoekom ons so 'n
vreemde resultaat sien. Die feit is,
dat tydens iterasie met for-in
die sleutels eintlik in die veranderlike
elem sal beland, ten spyte van
die misleidende naam van daardie
veranderlike.
Kom ons reg die gemaakte fout en skryf korrekte kode:
let arr = ['a', 'b', 'c'];
let res = '';
for (let elem of arr) {
res += elem;
}
console.log(res); // sal 'abc' uitvoer