Operator Boolean ECMAScript
- Halaman sebelumnya Operator bit
- Halaman berikutnya Operator penggandaan
Operator Boolean sangat penting, ia memungkinkan bahasa pemrograman berjalan dengan lancar.
Operator Boolean memiliki tiga jenis: NOT, AND, dan OR.
Operasi ToBoolean
Sebelum belajar berbagai operator logika, mari kita kenal dulu operasi ToBoolean yang dijelaskan di standar ECMAScript-262 v5.
Operasi abstrak ToBoolean mengubah parameter menurut aturan di tabel di bawah ini:
Jenis parameter | Hasil |
---|---|
Undefined | false |
Null | false |
Boolean | Hasilnya sama dengan parameter masukan (tidak diubah) |
Number | Jika parameter adalah +0, -0 atau NaN, hasilnya adalah false; jika tidak, hasilnya adalah true. |
String | Jika parameter adalah string kosong, hasilnya adalah false; jika tidak, hasilnya adalah true. |
Objek | true |
Operator LOGIKA NOT
Dalam ECMAScript, operator NOT logik sama seperti operator NOT logik di C dan Java, yang diwakili oleh tanda seru (!).
Beberapa perbezaan dengan operator OR dan AND logik adalah:Operator NOT logik selalu mengembalikan nilai Boolean.
Penggunaan operator NOT logik seperti berikut:
- Jika operands adalah objek, kembalikan false
- Jika operands adalah nol, kembalikan true
- Jika operands adalah angka selain nol, kembalikan false
- Jika operands adalah null, kembalikan true
- Jika operands adalah NaN, kembalikan true
- Jika operands adalah undefined, terjadi kesalahan
Biasanya, operator ini digunakan untuk mengawal kitaran:
var bFound = false; var i = 0; while (!bFound) { if (aValue[i] == vSearchValues) { bFound = true; } else { i++; } }
Dalam contoh ini, variabel Boolean (bFound) digunakan untuk mencatat pengambilan berjaya. Apabila item data di dalam masalah ditemui, bFound akan diatur kepada true, !bFound akan sama dengan false, yang bermakna program akan keluar dari lingkaran while.
Apabila memeriksa nilai Boolean variabel ECMAScript, boleh juga digunakan operator NOT logik. Ini memerlukan penggunaan 2 operator NOT dalam satu baris kod. Operator NOT pertama akan mengembalikan nilai Boolean. Operator NOT kedua akan mengambil negatif nilai Boolean ini, sehingga memberikan nilai Boolean sebenar variabel.
var bFalse = false; var sRed = "red"; var iZero = 0; var iThreeFourFive = 345; var oObject = new Object; document.write("bFalse 的逻辑值是 " + (!!bFalse)); document.write("sRed 的逻辑值是 " + (!!sRed)); document.write("iZero 的逻辑值是 " + (!!iZero)); document.write("iThreeFourFive 的逻辑值是 " + (!!iThreeFourFive)); document.write("oObject 的逻辑值是 " + (!!oObject));
Hasil:
Nilai logik bFalse adalah false Nilai logik sRed adalah true Nilai logik iZero adalah false Nilai logik iThreeFourFive adalah true Nilai logik objek oObject adalah true
Operator AND logik
Pada ECMAScript, operator AND logik ditandai dengan tiga dan titik (&&):
Contoh:
var bTrue = true; var bFalse = false; var bResult = bTrue && bFalse;
Tabel nilai benar di bawah ini menggambarkan perilaku operator AND logik:
Angka operasi 1 | Angka operasi 2 | Hasil |
---|---|---|
true | true | true |
true | false | false |
false | true | false |
false | false | false |
Operand operasi AND logik dapat berupa apapun, bukan hanya nilai Boolean.
Jika satu operand bukan nilai Boolean asli, operasi AND logik tidak pasti mengembalikan nilai Boolean:
- Jika satu operand adalah objek, dan lainnya adalah nilai Boolean, kembalikan objek.
- Jika kedua operand adalah objek, kembalikan objek kedua.
- Jika satu operand adalah null, kembalikan null.
- Jika satu operand adalah NaN, kembalikan NaN.
- Jika salah satu angka operasi adalah undefined, terjadi kesalahan.
Dengan sebab operasi AND logik di Java, operasi AND logik di ECMAScript juga operasi sederhana, yaitu jika operand pertama menentukan hasil, operand kedua tidak akan dihitung lagi. Untuk operasi AND logik, jika operand pertama adalah false, maka tidak ada yang penting apapun nilai operand kedua, hasilnya tidak mungkin sama dengan true.
Berikan contoh di bawah ini:
var bTrue = true; var bResult = (bTrue && bUnknown); //terjadi kesalahan alert(bResult); //baris ini tidak akan dieksekusi
Kod ini akan memicu kesalahan saat melakukan operasi AND logik, karena variabel bUnknown adalah undefined. Nilai variabel bTrue adalah true, karena operasi AND logik akan terus menghitung variabel bUnknown. Hal ini akan memicu kesalahan karena nilai bUnknown adalah undefined dan tidak dapat digunakan dalam operasi AND logik.
Jika mengubah contoh ini, menetapkan angka pertama menjadi false, maka tidak akan terjadi kesalahan:
var bFalse = false; var bResult = (bFalse && bUnknown); alert(bResult); //mengeluarkan "false"
Dalam kod ini, skrip akan mengeluarkan nilai operasi AND logik, yaitu string "false". Walaupun nilai variabel bUnknown adalah undefined, ia tidak akan dihitung karena nilai operand pertama adalah false.
Petunjuk:Pada penggunaan operator AND logika, perlu diingat kecenderungan perhitungan mudah ini.
Operator OR logika
Operator OR logika di ECMAScript sama seperti di Java, yang diwakili oleh garis lurus (||):
var bTrue = true; var bFalse = false; var bResult = bTrue || bFalse;
Tabel kebenaran di bawah ini mendeskripsikan perilaku operator OR logika:
Angka operasi 1 | Angka operasi 2 | Hasil |
---|---|---|
true | true | true |
true | false | true |
false | true | true |
false | false | false |
Sama seperti operator AND logika, jika salah satu angka operasi bukan nilai Boolean, operasi OR logika tidak pasti kembali nilai Boolean:
- Jika salah satu angka operasi adalah objek, dan semua angka operasi sebelah kiri adalah false, kembalikan objek itu sendiri.
- Jika kedua angka operasi adalah objek, kembalikan objek pertama.
- Jika angka operasi terakhir adalah null, dan semua angka operasi lain adalah false, maka kembalikan null.
- Jika angka operasi terakhir adalah NaN, dan semua angka operasi lain adalah false, maka kembalikan NaN.
- Jika salah satu angka operasi adalah undefined, terjadi kesalahan.
Sama seperti operator AND logika, operasi OR logika juga adalah operasi mudah. Untuk operator OR logika, jika nilai pertama operasi adalah true, maka operasi kedua tidak akan dihitung lagi.
Contoh:
var bTrue = true; var bResult = (bTrue || bUnknown); alert(bResult); //Output "true"
Dengan contoh sebelumnya, variabel bUnknown adalah belum didefinisikan. Namun, karena nilai variabel bTrue adalah true, bUnknown tidak akan dihitung, sehingga output adalah "true".
Jika diganti bTrue dengan false, terjadi kesalahan:
var bFalse = false; var bResult = (bFalse || bUnknown); //Terjadi kesalahan alert(bResult); //Bukan baris ini akan dijalankan
- Halaman sebelumnya Operator bit
- Halaman berikutnya Operator penggandaan