Bolehkah Operator `==` JavaScript Mencipta Penilaian Benar dengan Keadaan Bercanggah?

Patricia Arquette
Lepaskan: 2024-11-01 11:28:02
asal
430 orang telah melayarinya

Can JavaScript's `==` Operator Create True Evaluations with Contradictory Conditions?

Bolehkah Persimpangan Logik Dinilai Benar dengan Keadaan Bercanggah?

Dalam pertanyaan temu bual menarik yang dikemukakan oleh sebuah syarikat teknologi terkenal, persoalan timbul: bolehkah ungkapan (a == 1 && a == 2 && a == 3) pernah menilai benar dalam JavaScript?

Pada mulanya, ini mungkin kelihatan tidak masuk akal memandangkan sifat keadaan yang kelihatan bertentangan. Walau bagaimanapun, dengan menyelidiki selok-belok pengendali kesamarataan JavaScript (==), jalan muncul ke arah menjawab teka-teki ini.

Pengendali kesamaan JavaScript, tidak seperti rakan sejawatannya (===), melakukan paksaan jenis, secara automatik menukar nilai kepada jenis biasa untuk perbandingan. Ini membuka pintu kepada manipulasi objek, terutamanya dengan fungsi toString (atau valueOf) tersuai, yang membenarkan penjanaan nilai dinamik.

Pertimbangkan contoh berikut:

const a = {
  i: 1,
  toString: function () {
    return a.i++;
  }
}
Salin selepas log masuk

Dengan tersuai ini fungsi toString, setiap kali a secara tersirat dipaksa kepada rentetan (cth., untuk pengelogan), nilai i dalaman a meningkat. Ini menyediakan mekanisme untuk memenuhi ketiga-tiga syarat kesaksamaan:

a == 1 // true (initially i = 1)
a == 2 // true (after toString call, i = 2)
a == 3 // true (after second toString call, i = 3)
Salin selepas log masuk

Oleh itu, dengan memanfaatkan kelakuan dinamik objek dan penukaran jenis tersirat ==, ia menjadi mungkin untuk ungkapan (a == 1 && a == 2 && a == 3) untuk menilai kepada benar dalam JavaScript.

Atas ialah kandungan terperinci Bolehkah Operator `==` JavaScript Mencipta Penilaian Benar dengan Keadaan Bercanggah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!