Rumah  >  Artikel  >  hujung hadapan web  >  Nota kajian Javascript: Atribut traversal dan length_Pengetahuan asas tatasusunan

Nota kajian Javascript: Atribut traversal dan length_Pengetahuan asas tatasusunan

WBOY
WBOYasal
2016-05-16 16:30:431417semak imbas

Walaupun tatasusunan ialah objek dalam Javascript, ia tidak disyorkan untuk digunakan untuk dalam gelung untuk merentasi tatasusunan Sebenarnya, terdapat banyak sebab untuk menghalang kita daripada menggunakan dalam gelung pada tatasusunan.
Kerana gelung for in akan menghitung semua sifat pada rantai prototaip, dan satu-satunya cara untuk menghentikannya ialah menggunakan hasOwnProperty untuk menilai, ini akan menjadi lebih perlahan daripada gelung biasa.

Melintasi

Untuk prestasi terbaik, cara terbaik untuk mengulang tatasusunan ialah menggunakan klasik untuk gelung.

Salin kod Kod adalah seperti berikut:

senarai var = [1, 2, 3, 4, 5, ...... 100000000];
untuk(var i = 0, l = senarai.panjang; i < l; i ) {
console.log(senarai[i]);
}

Helah tambahan di sini ialah untuk cache panjang tatasusunan melalui l = list.length.
Walaupun sifat panjang ditakrifkan pada tatasusunan itu sendiri, masih terdapat overhed pada setiap lelaran gelung. Walaupun enjin Javascript terbaharu mungkin mempunyai pengoptimuman prestasi untuk situasi ini, tiada jaminan bahawa kod Javascript anda akan sentiasa berjalan dalam penyemak imbas ini.
Malah, gelung dengan panjang tanpa cache adalah lebih perlahan daripada gelung dengan panjang cache.

atribut panjang

Walaupun sifat length hanya mengembalikan bilangan elemen dalam tatasusunan melalui kaedah getter, tatasusunan boleh dipotong melalui kaedah penetap.

Salin kod Kod adalah seperti berikut:

var foo = [1, 2, 3, 4, 5, 6];
foo.length = 3;
foo; // [1, 2, 3]
foo.length = 6;
foo.push(4);
foo; // [1, 2, 3, undefined, undefined, undefined, 4]

Menetapkan nombor yang lebih kecil kepada sifat panjang akan memotong tatasusunan, manakala menetapkan nombor yang lebih besar tidak akan memotong tatasusunan.

Ringkasan

Untuk prestasi optimum, disyorkan untuk menggunakan gelung for dan bukannya gelung untuk dalam dan cache sifat panjang.

Terdapat juga objek tatasusunan yang tidak mempunyai sebarang kaedah, hanya satu panjang atribut unik. Objek rentetan mempunyai kaedah panjang~~

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