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'
Сонымен, нәтижеде 'abc' емес,
'012' жолы шығады. Неліктен
бұлай болғанын түсінейік.
Неге жалпы массив 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'