Rumah  >  Artikel  >  hujung hadapan web  >  Penjelasan terperinci tentang perbezaan antara traversal tatasusunan javascript untuk dan untuk kemahiran in_javascript

Penjelasan terperinci tentang perbezaan antara traversal tatasusunan javascript untuk dan untuk kemahiran in_javascript

WBOY
WBOYasal
2016-05-16 16:29:181478semak imbas

Terdapat dua cara untuk melintasi tatasusunan dalam js

Salin kod Kod adalah seperti berikut:

var array=['a']
//Standard untuk gelung
for(var i=1;i makluman(tatasusunan[i])
}
//gelung foreach
untuk(var i dalam tatasusunan){
makluman(tatasusunan[i])
}

Dalam keadaan biasa, keputusan kedua-dua kaedah merentasi tatasusunan di atas adalah sama. Mula-mula mari kita bincangkan tentang perbezaan pertama antara keduanya

I dalam standard untuk gelung ialah nombor jenis, yang mewakili subskrip tatasusunan, tetapi i dalam gelung foreach mewakili bahawa kunci tatasusunan adalah daripada rentetan jenis, kerana segala-galanya dalam js ialah objek. Cuba sendiri alert(typeof i); Perbezaan ini adalah masalah kecil. Sekarang saya menambah kod berikut, hasil pelaksanaan di atas akan berbeza.

Salin kod Kod adalah seperti berikut:

//Array asli js lanjutan
Array.prototype.test=function()

}

Cubalah dan lihat apa yang dilakukan oleh kod di atas. Kami mendapati bahawa piawaian untuk gelung masih benar-benar gelung pada tatasusunan, tetapi pada masa ini gelung foreach mencetak kaedah ujian yang baru saya tulis. Ini ialah perbezaan terbesar antara for dan foreach untuk melintasi tatasusunan Jika kita menggunakan foreach untuk melintasi tatasusunan dalam projek, katakan suatu hari seseorang secara tidak sengaja memanjangkan kelas Tatasusunan asli bagi js, atau memperkenalkan rangka kerja js luaran dan juga memanjangkan tatasusunan asli. susunan. Kemudian datang masalah.

Dua lagi cadangan

1. Jangan gunakan untuk dalam untuk melintasi tatasusunan, gunakan standard untuk tatasusunan pembolehubah gelung (kami tidak dapat menjamin sama ada js yang kami perkenalkan akan menggunakan prototaip untuk memanjangkan Tatasusunan asli)
2. Jika anda ingin melanjutkan kelas asli js, jangan gunakan prototaip

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