6 of 17 menu

Chyba pri prechádzaní poľa cyklom for-in v JavaScripte

Na prechádzanie poľa by sa mal použiť cyklus for-of. Niekedy sa však začiatočníci mylne pokúšajú použiť cyklus for-in. Pozrime sa na charakteristické znaky tejto chyby.

Majme pole:

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

Prejdime prvky tohto pola a zapíšme ich do jedného reťazca.

Nejaký programátor už túto úlohu vyriešil, ale chybne použil cyklus for-in. Pozrime sa, čo mu vyšlo:

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

Takže, výsledkom je reťazec '012', a nie 'abc'. Poďme zistiť, prečo sa to stalo.

Prečo sa pole vôbec prešlo cez cyklus for-in? Faktom je, že pole v JavaScripte je špeciálnym prípadom objektu. Preto je to v tomto ohľade vlastne korektný kód. Ale takto sa to robiť nemalo.

Problém je v tom, že for-in za určitých podmienok môže zachytiť niečo navyše, a tak okrem prvkov poľa pri prechádzaní získate ešte niečo parazitné. Prechádzajte polia iba pomocou for-of.

Poďme teraz zistiť, prečo vidíme taký zvlášny výsledok. Faktom je, že pri prechádzaní pomocou for-in do premennej elem v skutočnosti budú padať kľúče, napriek zavádzajúcemu názvu tejto premennej.

Opravme urobenú chybu a napíšme korektný kód:

let arr = ['a', 'b', 'c']; let res = ''; for (let elem of arr) { res += elem; } console.log(res); // vypíše 'abc'
Slovenčina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť