Rumah >hujung hadapan web >tutorial js >Mengapa Saya Perlu Mengelak Menggunakan Gelung `untuk...dalam` untuk Lelaran Tatasusunan dalam JavaScript?

Mengapa Saya Perlu Mengelak Menggunakan Gelung `untuk...dalam` untuk Lelaran Tatasusunan dalam JavaScript?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-28 22:07:18548semak imbas

Why Should I Avoid Using `for...in` Loops for Array Iteration in JavaScript?

Elakkan "untuk...dalam" untuk Lelaran Tatasusunan dalam JavaScript

Gelung "untuk...dalam" JavaScript mempunyai potensi perangkap apabila mengulangi tatasusunan. Walaupun nampaknya pendekatan yang sesuai, ia boleh membawa kepada hasil yang tidak dijangka.

Mengapa ia Idea Buruk

gelung "untuk...dalam" berulang ke atas sifat , termasuk yang tidak ditakrifkan secara langsung dalam tatasusunan. Ini termasuk sifat yang diwarisi daripada prototaip tatasusunan atau ditambah secara dinamik.

Sebagai contoh, pertimbangkan kod berikut:

var a = []; // Empty array
a[5] = 5; // Resize the array

Walaupun mencipta tatasusunan kosong, menetapkan nilai kepada indeks kelimanya mengubah saiz dengan berkesan tatasusunan.

Apabila melelaran menggunakan "untuk...dalam":

for (var i in a) {
  console.log(a[i]);
}

Gelung akan berulang pada sifat berikut:

  • 0, 1, 2, 3, 4 (indeks angka)
  • 5 (nilai yang diberikan kepada indeks kelima)

Walau bagaimanapun, ia juga akan berpotensi lelaran ke atas sifat yang diwarisi atau sifat lain yang ditambahkan pada objek tatasusunan, yang mungkin tidak berkaitan dengan data tatasusunan.

Sebaliknya, Gunakan Gelung Numerik

Untuk mengulang ke atas tatasusunan secara khusus, gunakan gelung berangka:

for (var i = 0; i < a.length; i++) {
  console.log(a[i]);
}

Gelung ini secara eksplisit berulang ke atas indeks berangka bagi tatasusunan, memastikan bahawa hanya nilai yang dijangkakan diakses.

Atas ialah kandungan terperinci Mengapa Saya Perlu Mengelak Menggunakan Gelung `untuk...dalam` untuk Lelaran Tatasusunan dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn