Pengendali kesaksamaan yang manakah (== lwn ===) harus digunakan dalam perbandingan JavaScript?
P粉023650014
2023-08-23 12:29:52
<p>Saya menggunakan JSLint untuk meneroka JavaScript dan ia mengembalikan banyak cadangan untuk menggantikan <code>==</code> (dua tanda sama) dengan <code>===</code> tanda sama) apabila melakukan operasi seperti membandingkan <kod>idSele_UNVEHtype.value.length == 0</code> </p>
<p>Adakah terdapat faedah prestasi untuk menggantikan <kod>==</kod> dengan <kod>===</kod>? </p>
<p>Sebarang peningkatan prestasi adalah dialu-alukan kerana terdapat banyak pengendali perbandingan. </p>
<p>Adakah terdapat peningkatan prestasi berbanding <kod>==</code> </p>
Gunakan operator
==
(Equal)Gunakan operator
===
(Identiti)Ini kerana pengendali kesamaan
==
melakukan cast jenis, yang bermaksud penterjemah secara tersirat akan cuba menukar nilai sebelum membandingkan.Sebaliknya, pengendali identiti
===
tidak melakukan pemaksaan jenis dan oleh itu tidak menukar nilai apabila membandingkan.Pengendali kesaksamaan yang ketat (
===
) 的行为与抽象相等运算符 (==
) adalah sama, kecuali tiada penukaran jenis dilakukan dan jenis mestilah sama untuk dianggap sama.Rujukan: Tutorial JavaScript: Operator Perbandingan
==
运算符将在进行任何必要的类型转换后比较是否相等。===
运算符不会进行转换,因此如果两个值不是同一类型,===
将简单地返回假
. Kedua-duanya sama laju.Petikan daripada karya hebat Douglas Crockford JavaScript: The Good Parts一个>,
Kemas kini
@Casebash dalam komen dan @Phillipe Laybaert jawapan tentang objek. Untuk objek,
==
和===
berkelakuan secara konsisten antara satu sama lain (kecuali dalam kes khas).Kes istimewa ialah apabila anda membandingkan primitif dengan objek yang menilai kepada primitif yang sama disebabkan oleh objek rentetan yang dicipta oleh
toString
或valueOf
方法。例如,考虑将字符串基元与使用String
pembinanya.Di sini
==
运算符检查两个对象的值并返回true
,但是===
看到它们类型不同并返回false
。哪一个是正确的?这实际上取决于您要比较的内容。我的建议是完全绕过这个问题,只是不要使用String
Pembina mencipta objek rentetan daripada literal rentetan.Rujukan
https://262.ecma-international.org/5.1/#sec-11.9 .3