6 of 17 menu

Masyvo iteravimo for-in ciklu klaida JavaScript

Masyvo iteravimui reikėtų naudoti ciklą for-of. Kartais, tačiau, pradedantieji klaidingai bando taikyti ciklą for-in. Pažiūrėkime į būdingus šios klaidos požymius.

Tarkime, kad turime masyvą:

let arr = ['a', 'b', 'c'];

Išskleiskime šio masyvo elementus ir surašykime juos į vieną eilutę.

Kažkoks programuotojas jau išsprendė šią užduotį, bet klaidingai panaudojo ciklą for-in. Pažiūrėkime, ką jam gavosi:

let res = ''; for (let elem in arr) { res += elem; } console.log(res); // išves '012'

Taigi, rezultate gaunama eilutė '012', o ne 'abc'. Išsiaiškinkime, kodėl taip atsitiko.

Kodėl apskritai masyvas buvo iteruojamas ciklu for-in? Esmė ta, kad masyvas JavaScript yra ypatingas objekto atvejis. Todėl iš tikrųjų šiuo požiūriu tai yra korektiškas kodas. Bet taip daryti ne rekomenduojama.

Esmė ta, kad for-in tam tikromis sąlygomis gali "prikabinti" per daug, ir jūs, be masyvo elementų, iteracijos metu gausite dar kažką parazitinio. Masyvus iteruokite tik naudodami for-of.

Dabar išsiaiškinkime, kodėl matome tokį keistą rezultatą. Esmė ta, kad iteruojant naudojant for-in į kintamąjį elem iš tikrųjų patenka raktai, nepaisant klaidinančio šio kintamojo pavadinimo.

Ištaisykime padarytą klaidą ir parašykime korektišką kodą:

let arr = ['a', 'b', 'c']; let res = ''; for (let elem of arr) { res += elem; } console.log(res); // išves 'abc'
Lietuvių
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mes naudojame slapukus svetainės veikimui, analizei ir personalizavimui. Duomenų apdorojimas vyksta pagal Privatumo politiką.
priimti visus nustatyti atšaukti