6 of 17 menu

JavaScript-ում for-in ցիկլով զանգվածի վերաահաշվարկի սխալ

Զանգվածը վերաահաշվարկելու համար պետք է օգտագործել 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हिन्दीMagyarIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Մենք օգտագործում ենք cookie-ներ կայքի աշխատանքի, վերլուծության և անհատականացման համար։ Տվյալների մշակումը կատարվում է համաձայն Գաղտնիության քաղաքականության։
ընդունել բոլորը կարգավորել մերժել