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 истифода мебарем. Коркарди маълумот мувофиқи Сиёсати махфият сурат мегирад.
ҳамаро қабул кардан танзим кардан рад кардан