JavaScript memiliki dua cara untuk menentukan apakah kedua nilai tersebut sama.
Simbol yang sama
Simbol kesetaraan terdiri dari dua tanda yang sama: ==
JavaScript adalah bahasa tipe lemah. Ini berarti bahwa tanda -tanda yang sama akan memberikan jenis untuk membandingkan dua nilai.
Salinan kode adalah sebagai berikut:
"" == "0" // false
0 == "" // Benar
0 == "0" // Benar
false == "false" // false
false == "0" // true
false == tidak terdefinisi // false
false == null // false
null == tidak terdefinisi // true
"/t/r/n" == 0 // true
Kode di atas menunjukkan hasil konversi tipe, jadi kita tahu bahwa menggunakan tanda yang sama == adalah kebiasaan pemrograman yang buruk. Karena mekanisme konversi tipe kompleks dalam JavaScript, kesalahan yang dihasilkan akan menjadi sulit untuk dilacak.
Selain itu, casting tipe juga dapat berdampak tertentu pada kinerja, misalnya, ketika suatu string dibandingkan dengan angka, itu akan dilemparkan ke angka.
Simbol kesetaraan yang ketat
Simbol kesetaraan yang ketat terdiri dari tiga tanda yang sama: ===
Ini mirip dengan pengoperasian simbol yang sama, tetapi simbol yang sama sama tidak akan melakukan operasi cast.
Salinan kode adalah sebagai berikut:
"" === "0" // false
0 === "" // false
0 === "0" // Salah
false === "false" // false
false === "0" // false
false === tidak terdefinisi // false
false === null // false
null === tidak terdefinisi // false
"/t/r/n" === 0 // false
Kode di atas membuat kode lebih jelas. Jika kedua nilai memiliki jenis yang berbeda, mereka akan secara langsung mengembalikan False, yang juga akan meningkatkan kinerja.
Objek perbandingan
Meskipun == dan === disebut tanda yang sama, kinerja akan sangat berbeda ketika salah satu dari dua nilai dibandingkan adalah objek.
Salinan kode adalah sebagai berikut:
{} === {}; // PALSU
string baru ('foo') === 'foo'; // PALSU
Angka baru (10) === 10; // PALSU
var foo = {};
foo === foo; // BENAR
Di sini, tidak lagi hanya untuk membandingkan apakah kedua nilai tersebut sama, itu akan menentukan apakah kedua nilai tersebut merujuk pada instance objek yang sama, yang berperilaku lebih seperti penunjuk di C.
Meringkaskan
Sangat disarankan di sini untuk hanya menggunakan simbol kesetaraan yang ketat ===. Jika kita perlu melakukan konversi jenis, kita dapat melakukan konversi jenis eksplisit sebelum perbandingan, alih -alih mengandalkan metode casting kompleks Javascript sendiri.