Грешка приликом преласка низа петљом 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'