JavaScript-da for-in aýlawy bilen massiw geçmek ýalňyşlygy
Massiw geçmek üçin
for-of aýlawy ulanylmalydyr.
Emma käwagt, başlanýanlar ýalňyşlyk bilen
for-in aýlawyny ulanyp görýärler.
Geliň, bu ýalňyşlygyň häsiýetli alamatlaryna ser edeliň.
Bizde massiw bardyr diýeliň:
let arr = ['a', 'b', 'c'];
Geliň bu massiw elementlerini geçip olary bir setire ýazalyň.
Bir programmaçy bu meseläni çözen,
ýöne ýalňyşlyk bilen
for-in aýlawyndan peýdalandy.
Geliň, onuň näme gazandygyna ser edeliň:
let res = '';
for (let elem in arr) {
res += elem;
}
console.log(res); // '012' görkezer
Şeýlelikde, netije hökmünde 'abc' däl,
eýsem '012' setiri alnyar. Geliň, näme üçin
şeýle bolýandygyna düşüneliň.
Ähli etdi massiw näme üçin
for-in aýlawy arkaly geçirildi? Sebäbi,
JavaScript-däki massiw obyektiň ýörite
hady. Şonuň üçin aslynda
bu dogry koddur. Emma şeýle etmek
zerur däl.
Sebäbi, for-in
käbir şertlerde artykmaç zyýanly zada ýapşyp biler,
we siz massiw elementleriniň ýanynda
geçirlende ýene bir nämeden artykmaç alarsyňyz.
Massiwleri diňe for-of arkaly geçiriň.
Geliň indi näme üçin şeýle garyşyk netije görýändigimizi düşüneliň. Sebäbi,
for-in arkaly geçirilende
elem üýtgeýjisine aslynda
açarlar düşýär, bu üýtgeýjäniň ady
adamakyl ýalbardýan bolsa-da.
Geliň, edilen ýalňyşlygy düzedeliň we dogry kody ýazalyň:
let arr = ['a', 'b', 'c'];
let res = '';
for (let elem of arr) {
res += elem;
}
console.log(res); // 'abc' görkezer