Rumah >hujung hadapan web >tutorial js >Soalan temu bual: Bagaimana untuk menjadikan 'a==1&&a==2&&a==3' benar?
Artikel ini akan berkongsi dengan anda soalan temu duga klasik untuk melihat cara untuk membuat "a==1&&a==2&&a==3" benar? Melalui soalan temu bual ini, saya mempelajari perkara-perkara yang terkandung di dalamnya. Saya harap ia dapat membantu semua orang!
if (a == 1 && a == 2 && a == 3) { console.log('Win') }
Cara memasukkan kod jika dilaksanakan dan berjaya mencetaknya pada konsol Win
?
Apabila saya mula-mula melihat soalan itu, saya menjadi buta Bagaimana keadaan yang bercanggah itu boleh berlaku? masa. Di manakah orang?
Ia tidak mengatakan biarkan a sama dengan 1 2 3 pada masa yang sama.
Oleh kerana mereka bukan dari tempoh yang sama, maka sudah tentu seseorang itu boleh menjadi kanak-kanak, kemudian dewasa, dan kemudian orang tua.
Berbalik kepada soalan, jika saya mahu syarat ini benar, saya perlu mendapatkan sekali dan biarkan ia meningkat 1 pada masa yang sama.
2. Penyelesaian
toString
Jalankannya sekali, tambah 1 pada _a, dan kemudian kembali.Oleh kerana toString ialah kaedah lalai di atas
const a = { _a: 0, toString: function() { return ++a._a } }kaedah dipintas.
Mata pengetahuan yang melibatkan prototaip dan rantai prototaipObject.prototype
toString
. PakejSesetengah rakan di ruangan komen mengatakan bahawa tetapan a = true juga boleh menyelesaikan masalah. Sungguh sangat mengelirukan. Malah, ia mengelirukan keutamaan penukaran tersirat. Ringkasnya, penukaran tersirat terdiri daripada dua bahagian:
Peraturan penukaran + Syarat yang mencetuskan penukaran
mencetuskan peraturan penukaran
secara keseluruhan dan rentetan di sebelah kanan mencetuskan peraturan penukaran . if
Berbalik kepada soalan ini, sebelah kanan Boolean()
ialah nombor dan garisan larian JS adalah dari kiri ke kanan. Oleh itu, apa yang dicetuskan pada masa ini ialah peraturan ==
Selepas menukarkan toString()
di sebelah kiri kepada
s adalah sama dengan ==
, secara semula jadi tiada lagi peraturan. akan dicetuskan Pada masa ini Ia tidak lagi membentuk penukaran tersirat. Jadi Number()
tidak benar. true
1
Saya mengingatinya sekarang, dan ia akan lebih baik daripada menghafalnya semasa temu duga 1 == 1 && 1 == 2 && 1 == 3
tiga Apa yang perlu saya lakukan jika saya menungguSemua orang tahu bahawa?
menentukan jenis dahulu dan kemudian nilainya. di sini telah menukar objek kepada rentetan secara lalai Jika anda menggunakan , hasilnya tidak akan benar
===
2.2 definePropertiestoString
toStirng
Object.defineProperties(window, { _a: { value: 0, writable: true }, a: { get: function() { return ++_a } } })
3. RingkasanSama ada anda boleh buat soalan temuduga ini atau tidak tiada maknanya. Tetapi sangat menarik untuk memahami titik-titik pengetahuan yang terkandung dalam soalan temu bual ini.
Tutorial JavaScript Lanjutan
]Atas ialah kandungan terperinci Soalan temu bual: Bagaimana untuk menjadikan 'a==1&&a==2&&a==3' benar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!