6 of 17 menu

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
Afrikaans
AzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ons gebruik koekies vir die werking van die webwerf, ontleding en personalisering. Die verwerking van data geskied volgens die Privaatheidsbeleid.
aanvaar alles instel verwerp