6 of 17 menu

Błąd iteracji po tablicy pętlą for-in w JavaScript

Do iteracji po tablicy należy używać pętli for-of. Czasami jednak początkujący błędnie próbują zastosować pętlę for-in. Przyjrzyjmy się charakterystycznym oznakom tego błędu.

Załóżmy, że mamy tablicę:

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

Przejdźmy przez elementy tej tablicy i zapiszmy je w jednym ciągu.

Pewien programista już rozwiązał to zadanie, ale błędnie skorzystał z pętli for-in. Zobaczmy, co mu wyszło:

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

A więc w wyniku otrzymujemy ciąg '012', a nie 'abc'. Zastanówmy się, dlaczego do tego doszło.

Dlaczego w ogóle tablica została przeglądnięta przez pętlę for-in? Chodzi o to, że tablica w JavaScript jest szczególnym przypadkiem obiektu. Dlatego tak naprawdę pod tym względem jest to poprawny kod. Ale nie należy tak robić.

Chodzi o to, że for-in w pewnych warunkach może "zahaczyć" o coś dodatkowego i oprócz elementów tablicy możesz podczas iteracji dostać coś jeszcze, pasożytniczego. Przeglądaj tablice tylko za pomocą for-of.

Zastanówmy się teraz, dlaczego widzimy taki dziwny wynik. Chodzi o to, że podczas iteracji przez for-in do zmiennej elem w rzeczywistości będą trafiać klucze, mimo mylącej nazwy tej zmiennej.

Poprawmy popełniony błąd i napiszmy poprawny kod:

let arr = ['a', 'b', 'c']; let res = ''; for (let elem of arr) { res += elem; } console.log(res); // wypisze 'abc'
Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć