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' чыгарат