Rumah >hujung hadapan web >tutorial js >Adakah JavaScript `untuk...dalam` Menjamin Pesanan Harta?

Adakah JavaScript `untuk...dalam` Menjamin Pesanan Harta?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-11 06:09:11454semak imbas

Does JavaScript's `for...in` Loop Guarantee Property Order?

Tertib Elemen Gelung dalam "untuk (... dalam ...)" Penyata

"untuk (... dalam . ..)" gelung dalam JavaScript digunakan untuk mengulangi sifat objek. Timbul persoalan sama ada sifat ini diproses mengikut susunan ia diisytiharkan.

Menurut John Resig, semua penyemak imbas utama mengekalkan susunan definisi sifat objek semasa lelaran gelung. Walau bagaimanapun, Chrome dan Opera mempamerkan pengecualian hanya untuk nama sifat bukan berangka. Sifat ini diproses lebih awal daripada sifat berangka pertama dalam kedua-dua penyemak imbas.

Untuk memudahkan:

  • Sifat dengan nama berangka diproses mengikut urutan.
  • Sifat dengan bukan -nama berangka diproses sebelum sifat berangka dalam Chrome dan Opera.

Contohnya:

var obj = {
  "first": "first",
  "2": "2",
  "34": "34",
  "1": "1",
  "second": "second"
};
for (var i in obj) { console.log(i); };

Dalam kebanyakan penyemak imbas, outputnya ialah:

1
2
34
first
second

Dalam Chrome dan Opera, outputnya ialah :

1
2
34
first
second

Walaupun konsistensi semasa dalam tingkah laku penyemak imbas, spesifikasi ECMAScript membiarkan mekanik gelung tidak ditentukan. Oleh itu, bergantung pada pesanan semasa tidak disyorkan.

Amalan Terbaik:

Jika pesanan adalah penting untuk aplikasi anda, anda dinasihatkan untuk menggunakan tatasusunan dan bukannya objek dengan gelung "untuk (... dalam ...)". Tatasusunan mengekalkan susunan unsur dengan lebih dipercayai.

Atas ialah kandungan terperinci Adakah JavaScript `untuk...dalam` Menjamin Pesanan Harta?. 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