6 of 17 menu

Грешка при обхождане на масив с цикъл for-in в JavaScript

За обхождане на масив трябва да се използва цикъл for-of. Понякога обаче начинаещи погрешно се опитват да приложат цикъл for-in. Нека да разгледаме характерните признаци на тази грешка.

Да предположим, че имаме масив:

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

Нека да обходим елементите на този масив и да ги запишем в един низ.

Някой програмист вече е решил тази задача, но погрешно е използвал цикъл for-in. Нека да видим какво е получил:

let res = ''; for (let elem in arr) { res += elem; } console.log(res); // ще изведе '012'

И така, в резултат се получава низ '012', а не 'abc'. Нека да разберем защо се е случило това.

Защо изобщо масивът се обходи чрез цикъл for-in? Работата е там, че масивът в JavaScript е частен случай на обект. Затова всъщност в този смисъл това е коректен код. Но така не трябва да се прави.

Работата е там, че for-in при определени условия може да улови нещо допълнително, и вие освен елементите на масива може да получите при обхождане нещо паразитно. Обхождайте масиви само чрез for-of.

Нека сега да разберем защо виждаме такъв странен резултат. Работата е там, че при обхождане чрез for-in в променливата elem всъщност ще попадат ключовете, въпреки подвеждащото име на тази променлива.

Нека да поправим допуснатата грешка и да напишем коректен код:

let arr = ['a', 'b', 'c']; let res = ''; for (let elem of arr) { res += elem; } console.log(res); // ще изведе 'abc'
Български
AfrikaansAzə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
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне