Apakah Perbezaan Antara Kesamaan Objek Biasa dan Tegas?
Dalam JavaScript, membandingkan objek dengan biasa (==) atau ketat (= ==) pengendali kesaksamaan mungkin tidak membuahkan hasil yang diharapkan. Tidak seperti jenis data primitif, objek dirujuk oleh alamat ingatannya. Oleh itu, perbandingan berdasarkan nilainya sahaja tidak mencukupi.
Pertimbangkan kod berikut:
var a = {}; var b = {}; console.log(a == b); // false console.log(a === b); // false
Walaupun kedua-dua a dan b adalah objek kosong, rujukannya menghala ke alamat memori yang berbeza. Akibatnya, kedua-dua penilaian kesaksamaan biasa dan ketat mengembalikan palsu.
Mengapa ini Penting?
Memahami nuansa ini adalah penting untuk memastikan perbandingan objek yang tepat. Objek hanya boleh dianggap sama jika ia merujuk alamat memori yang sama. Menugaskan objek kepada pembolehubah baharu menghasilkan rujukan baharu, walaupun kandungannya sama.
Sebagai contoh, katakan kita mempunyai tiga objek: a, b dan c.
a = {} b = a c = {}
Dalam kes ini, a == a, a == b, dan a != c. Ini kerana a dan b merujuk alamat memori yang sama, manakala c mempunyai rujukan uniknya sendiri.
Kesimpulan
Apabila membandingkan objek, adalah penting untuk mengingati kesamaan objek adalah berdasarkan rujukan ingatan, bukan nilainya. Pengendali kesaksamaan yang tetap dan ketat berkelakuan sama untuk objek, dan mereka hanya kembali benar jika objek yang dibandingkan merujuk alamat memori yang sama.
Atas ialah kandungan terperinci Kesamaan Objek JavaScript: Apakah Perbezaan Antara `==` dan `===`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!