Ralat Mengulangi Array dengan Gelung for-in dalam JavaScript
Untuk mengulangi array, seseorang patut
menggunakan gelung for-of.
Kadang-kadang, bagaimanapun, pemula secara silap
cuba menggunakan gelung for-in.
Mari kita lihat tanda-tanda ciri
ralat ini.
Katakan kita mempunyai array:
let arr = ['a', 'b', 'c'];
Mari kita ulangi elemen-elemen ini array dan tuliskan mereka dalam satu baris.
Seorang pengaturcara telah menyelesaikan masalah ini,
tetapi secara silap menggunakan gelung
for-in. Mari lihat,
apa yang dia dapat:
let res = '';
for (let elem in arr) {
res += elem;
}
console.log(res); // akan memaparkan '012'
Jadi, hasilnya ialah rentetan '012',
bukan 'abc'. Mari kita fahami mengapa
ini berlaku.
Mengapa array itu boleh diulangi
melalui gelung for-in? Hakikatnya ialah
array dalam JavaScript adalah kes khas
objek. Oleh itu, sebenarnya
dari segi ini, ia adalah kod yang betul. Tetapi ini tidak patut
dilakukan.
Masalahnya ialah for-in
dalam keadaan tertentu boleh mengambil
elemen tambahan, dan selain elemen array,
anda mungkin mendapat sesuatu yang parasit semasa mengulangi.
Ulangi array hanya dengan for-of.
Sekarang mari kita fahami mengapa kita melihat
keputusan yang pelik itu. Hakikatnya,
apabila mengulangi dengan for-in
pembolehubah elem sebenarnya
akan mengandungi kunci, walaupun
nama pembolehubah itu mengelirukan.
Mari kita betulkan ralat yang dilakukan dan tulis kod yang betul:
let arr = ['a', 'b', 'c'];
let res = '';
for (let elem of arr) {
res += elem;
}
console.log(res); // akan memaparkan 'abc'