Kosa ya Kuzuru Safu kwa kitanzi for-in katika JavaScript
Ili kuzuru safu inapaswa
kutumiwa kitanzi for-of.
Wakati mwingine, hata hivyo, wanaoanza kusoma hutatanishwa
kujaribu kutumia kitanzi for-in.
Hebu tuangalie ishara za kawaida
za kosa hili.
Tuchukulie tuna safu ifuatayo:
let arr = ['a', 'b', 'c'];
Hebu tuzure vipengele vya hii safu na tuyaandike kwenye mstari mmoja.
Programmer fulani tayari ametatua tatizo hili,
lakime kosa ametumia kitanzi
for-in. Hebu tuangalie,
kilichotokea:
let res = '';
for (let elem in arr) {
res += elem;
}
console.log(res); // itatoa '012'
Kwa hivyo, matokeo yake ni mfuatano '012',
wala si 'abc'. Hebu tuchambue kwa nini
kilichotokea ni hivi.
Kwa nini hasa safu ilizurwa
kupitia kitanzi for-in? Jambo ni kwamba
safu katika JavaScript ni kesi maalum
ya kitu. Kwa hivyo kweli
kwa upande huu huu ni msimbo sahihi. Lakini haifai kufanya hivyo.
Jambo ni kwamba for-in
chini ya hali fulani inaweza kunasa
vitu vya ziada, na wewe badala ya vipengele vya safu tu
utapata kitu kingine chochote cha usiri wakati wa kuzuru.
Zuru safu zako tu kupitia for-of.
Hebu sasa tuchambue kwa nini tunaona
matokeo ya kushangaza kama haya. Jambo ni,
kwamba wakati wa kuzuru kupitia for-in
katika kutofautisha elem kweli
ndio funguo zinazoingia, bila kujali
jina la kutofautisha hili linalochanganya.
Hebu tusahihishe kosa lililofanyika na tuandike msimbo sahihi:
let arr = ['a', 'b', 'c'];
let res = '';
for (let elem of arr) {
res += elem;
}
console.log(res); // itatoa 'abc'