Mengapa Dua Objek Yang Sama Tidak Sama Antara Satu Sama Lain?
Dalam JavaScript, pengendali kesaksamaan (==) dan pengendali kesaksamaan yang ketat (===) digunakan untuk membandingkan nilai. Walau bagaimanapun, apabila membandingkan objek, pengendali ini berkelakuan berbeza daripada yang anda jangkakan.
Pertimbangkan kod berikut:
var a = {}; var b = {}; console.log(a == b); // returns false console.log(a === b); // returns false
Kod ini log palsu untuk kedua-dua ungkapan, walaupun a dan b adalah kedua-duanya objek kosong. Mengapa ini?
Perbezaan utama antara kesamaan biasa (==) dan ketat (===) ialah pengendali kesamaan yang ketat melumpuhkan penukaran jenis. Memandangkan a dan b ialah kedua-dua objek, jenis operator kesamaan tidak penting dalam kes ini.
Tidak kira operator kesamaan yang digunakan, perbandingan objek hanya dinilai benar jika anda membandingkan objek tepat yang sama . Dalam erti kata lain, diberi var a = {}, b = a, c = {};, a == a, a == b, tetapi a != c.
Dua objek berbeza (walaupun mereka mempunyai sifar atau sifat tepat yang sama) tidak akan membandingkan sama. Untuk membandingkan kesamaan sifat dua objek, anda boleh menggunakan kaedah Object.is() atau pendekatan yang digariskan dalam jawapan yang disediakan.
Atas ialah kandungan terperinci Mengapa Dua Objek JavaScript Kosong Tidak Dibandingkan sebagai Sama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!