Operator Sama Dengan ECMAScript
- Halaman sebelumnya Operator hubungan
- Halaman berikutnya Operator pengalaman
Menentukan apakah dua variabel sama adalah operasi yang sangat penting dalam desain program. Pada penanganan nilai asli, operasi ini cukup sederhana, tetapi bila melibatkan objek, tugas menjadi sedikit kompleks.
ECMAScript menyediakan dua set operator ekualitas: operator sama dan tidak sama untuk menangani nilai asli, serta operator sama dan tidak sama untuk menangani objek.
Sama dan Tidak Sama
Dalam ECMAScript, simbol sama ditandai dengan tiga titik (==), yang mengembalikan true hanya jika kedua operand sama. Simbol tidak sama ditandai dengan tanda serupa (!=), yang mengembalikan true hanya jika kedua operand tidak sama. Untuk menentukan apakah kedua operand sama, kedua operator ini akan melakukan konversi tipe.
Aturan konversi tipe seperti berikut:
- Jika salah satu operand adalah nilai Boolean, sebelum memeriksa ekualitas, konversi ke nilai angka. false diubah menjadi 0, dan true menjadi 1.
- Jika salah satu operand adalah string, dan yang lain adalah angka, sebelum memeriksa ekualitas, coba konversi string ke angka.
- Jika salah satu operand adalah objek, dan yang lain adalah string, sebelum memeriksa ekualitas, coba konversi objek ke string.
- Jika salah satu operand adalah objek, dan yang lain adalah angka, sebelum memeriksa ekualitas, coba konversi objek ke angka.
Pada pengecekan ekualitas, operator ini juga mengikuti aturan berikut:
- Nilai null dan undefined sama.
- Pada pengecekan ekualitas, null dan undefined tidak boleh diubah menjadi nilai lain.
- Jika salah satu operand adalah NaN, simbol sama akan mengembalikan false, dan simbol tidak sama akan mengembalikan true.
- Jika kedua operand adalah objek, maka yang dihubungkan adalah referensi mereka. Jika kedua operand menunjuk ke objek yang sama, simbol sama mengembalikan true, jika tidak, kedua operand tidak sama.
Peringatan penting:Meskipun kedua bilangan adalah NaN, simbol sama tetap mengembalikan false, karena menurut aturan, NaN tidak sama dengan NaN.
Tabel di bawah ini menampilkan beberapa kasus khusus serta hasilnya:
ekspresi | nilai |
---|---|
null == undefined | true |
"NaN" == NaN | false |
5 == NaN | false |
NaN == NaN | false |
NaN != NaN | true |
false == 0 | true |
true == 1 | true |
true == 2 | false |
undefined == 0 | false |
null == 0 | false |
"5" == 5 | true |
Equal dan non-equal
Operator equal dan non-equal adalah equal dan non-equal. Kedua operator melakukan hal yang sama seperti equal dan non-equal, hanya mereka tidak melaksanakan konversi tipe sebelum memeriksa ekualitas.
Equal digambarkan dengan tiga tiga sama dengan (===), hanya kembali true ketika bilangan operan sama tanpa perlu diubah tipe.
Contoh:
var sNum = "66"; var iNum = 66; alert(sNum == iNum); //Keluaran "true" alert(sNum === iNum); //Keluaran "false"
Dalam kode ini, pertama alert menggunakan tiga sama dengan untuk membandingkan string "66" dan angka 66, keluaran "true". Seperti yang disebutkan sebelumnya, ini disebabkan karena string "66" akan diubah menjadi angka 66, lalu dihitung dengan angka lain 66. Alert kedua menggunakan equal tanpa penuh konversi untuk membandingkan string dan angka, tentu saja, string tidak sama dengan angka, jadi keluaran "false".
Non-equal digambarkan dengan tanda seru dan dua tiga sama dengan (!==), hanya kembali true ketika bilangan operan tak perlu diubah tipe dan berbeda.
Contoh:
var sNum = "66"; var iNum = 66; alert(sNum != iNum); //Keluaran "false" alert(sNum !== iNum); //Keluaran "true"
Di sini, pertama alert menggunakan non-equal untuk mengubah string "66" menjadi angka 66, sehingga ia sama dengan bilangan operan kedua 66. Oleh karena itu, hasil perhitungan adalah "false", karena kedua bilangan operan adalah sama. Alert kedua menggunakan non-equal. Pertanyaan yang dijajaki adalah: "sNum" berbeda dengan "iNum"? Jawabnya adalah: Ya (true), karena sNum adalah string, sementara iNum adalah angka, mereka tentu saja berbeda.
- Halaman sebelumnya Operator hubungan
- Halaman berikutnya Operator pengalaman