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šuMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние користиме колачиња за работата на веб-страната, анализа и персонализација. Обработката на податоци се врши во согласност со Политиката за приватност.
прифати ги сите прилагоди одбиј