Semakan Kesaksamaan Gagal untuk Tatasusunan: Teka-teki JavaScript
Tatasusunan dalam JavaScript, tidak seperti primitif seperti rentetan dan nombor, ialah jenis rujukan. Ini bermakna ia disimpan dalam ingatan sebagai objek dan bukannya nilai mentah. Akibatnya, semakan kesaksamaan menggunakan operator kesaksamaan == akan gagal untuk tatasusunan, kerana ia hanya membandingkan rujukan objek.
Untuk memahami perkara ini, mari kita periksa contoh mudah:
[1, 2] == [1, 2]; // false
Walaupun tatasusunan mengandungi elemen yang sama, ia dianggap sebagai objek yang berbeza. Operator kesamaan hanya akan kembali benar jika pembolehubah merujuk objek tatasusunan yang sama dalam ingatan.
Untuk membandingkan kandungan tatasusunan dan bukannya rujukan, anda perlu menggunakan pendekatan yang lebih mantap. Satu kaedah sedemikian ialah melintasi kedua-dua tatasusunan, membandingkan setiap nilai elemen. Walau bagaimanapun, ini boleh menjadi tidak cekap untuk tatasusunan besar.
Satu lagi pendekatan biasa ialah menukar kedua-dua tatasusunan kepada rentetan dan kemudian membandingkan rentetan yang terhasil:
[1, 2].toString() === [1, 2].toString(); // true
Walaupun teknik ini berfungsi, ia sepatutnya' t digunakan untuk objek tersuai, kerana susunan sifat boleh berbeza-beza antara keadaan, yang membawa kepada kesamarataan yang salah semak.
Sebaliknya, untuk objek tersuai atau struktur data yang kompleks, adalah disyorkan untuk melaksanakan fungsi kesaksamaan tersuai yang secara eksplisit membandingkan semua sifat yang berkaitan. Ini menyediakan cara yang boleh dipercayai dan boleh diselenggara untuk menyemak kesaksamaan bagi jenis data bukan primitif.
Atas ialah kandungan terperinci Mengapa Pemeriksaan Kesaksamaan Gagal untuk Tatasusunan dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!