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
Мы выкарыстоўваем cookie для працы сайта, аналітыкі і персаналізацыі. Апрацоўка дадзеных адбываецца згодна Палітыкай канфідэнцыяльнасці.
прыняць усе наладзіць адхіліць