6 of 17 menu

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'
Melayu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Kami menggunakan kuki untuk operasi laman web, analisis dan personalisasi. Pemprosesan data dijalankan mengikut Polisi Kerahsiaan.
terima semua tataletak tolak