6 of 17 menu

Kļūda, masīva apstaigāšanā ar for-in ciklu JavaScript

Masīva apstaigāšanai vajadzētu izmantot ciklu for-of. Dažreiz tomēr iesācēji kļūdaini mēģina izmantot ciklu for-in. Apskatīsim šīs kļūdas raksturīgās pazīmes.

Pieņemsim, ka mums ir masīvs:

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

Apstaigāsim šī masīva elementus un ierakstīsim tos vienā rindā.

Kāds programmētājs jau ir atrisinājis šo uzdevumu, bet kļūdaini izmantojis ciklu for-in. Apskatīsim, kas viņam izdevās:

let res = ''; for (let elem in arr) { res += elem; } console.log(res); // izvadīs '012'

Tātad, rezultātā tiek iegūta rinda '012', nevis 'abc'. Padomāsim, kāpēc tā notika.

Kāpēc vispār masīvs tika apstaigāts ar ciklu for-in? Lieta ir tāda, ka masīvs JavaScript ir īpašs objekta gadījums. Tāpēc patiesībā šajā ziņā tas ir korekts kods. Bet tā darīt nevajadzētu.

Lieta ir tāda, ka for-in noteiktos apstākļos var satvert lieko, un jūs, papildus masīva elementiem, apstaigājot iegūsit kaut ko papildus parazitāru. Apstaigājiet masīvus tikai ar for-of.

Tagad padomāsim, kāpēc mēs redzam tādu dīvainu rezultātu. Lieta ir tāda, ka, apstaigājot ar for-in, mainīgajā elem patiesībā nokļūs atslēgas, neskatoties uz maldinošo šī mainīgā nosaukumu.

Izlabosim pieļauto kļūdu un uzrakstīsim korektu kodu:

let arr = ['a', 'b', 'c']; let res = ''; for (let elem of arr) { res += elem; } console.log(res); // izvadīs 'abc'
Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt