Operator Boolean ECMAScript

Operator Boolean sangat penting, ia memungkinkan bahasa pemrograman untuk berjalan dengan lancar.

Operator Boolean memiliki tiga jenis: NOT, AND, dan OR.

Operasi ToBoolean

Sebelum belajar tentang berbagai operator logika, mari kita kenal dulu operasi ToBoolean yang dijelaskan di spesifikasi ECMAScript-262 v5.

Operasi abstrak ToBoolean mengubah parameter menurut aturan di tabel di bawah ini:

Tipe parameter Result
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.
Object true

Operator Logika NOT

Dalam ECMAScript, operator NOT logis sama dengan operator NOT logis di C dan Java, yang digambarkan dengan tanda seru (!).

Yang berbeda dengan operator OR dan AND logis,Operator NOT logis selalu mengembalikan nilai Boolean.

Pengembalian perilaku operator NOT logis adalah seperti ini:

  • Jika operands adalah objek, kembalikan false
  • Jika operands adalah angka 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 mengontrol loop:

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 apakah pencarian berhasil atau tidak. Saat menemukan item data di dalam masalah, bFound akan diatur ke true, !bFound akan sama dengan false, yang berarti program akan keluar dari lingkaran while.

Pada saat mengecek nilai Boolean variabel ECMAScript, Anda juga dapat menggunakan operator NOT logis. Hal ini memerlukan penggunaan 2 operator NOT dalam 1 baris kode. Tidak kira tipe operands, operator NOT pertama akan mengembalikan nilai Boolean. Operator NOT kedua akan mengambil negasi nilai Boolean, sehingga memberikan nilai Boolean sebenarnya variabel.

var bFalse = false;
var sRed = "red";
var iZero = 0;
var iThreeFourFive = 345;
var oObject = new Object;
document.write("nilai logis bFalse adalah " + (!!bFalse));
document.write("nilai logis sRed adalah " + (!!sRed));
document.write("nilai logis iZero adalah " + (!!iZero));
document.write("nilai logis iThreeFourFive adalah " + (!!iThreeFourFive));
document.write("nilai logis oObject adalah " + (!!oObject));

Hasil:

Nilai logika bFalse adalah false
Nilai logika sRed adalah true
Nilai logika iZero adalah false
Nilai logika iThreeFourFive adalah true
Nilai logika oObject adalah true 

Operator AND logika

Dalam ECMAScript, operator AND logika ditandai dengan tiga dan (&&).

For example:

var bTrue = true;
var bFalse = false;
var bResult = bTrue && bFalse;

Tabel nilai yang benar menjelaskan perilaku operator AND logika:

Operand 1 Operand 2 Result
true true true
true false false
false true false
false false false

Operand operasi AND logika dapat berupa apapun, bukan hanya nilai Boolean.

Jika salah satu operand bukan nilai Boolean asli, operasi AND logika tidak pasti mengembalikan nilai Boolean:

  • Jika salah satu operand adalah objek, dan lainnya adalah nilai Boolean, kembalikan objek itu sendiri.
  • Jika kedua operand adalah objek, kembalikan objek kedua.
  • Jika salah satu operand adalah null, kembalikan null.
  • Jika salah satu operand adalah NaN, kembalikan NaN.
  • If any operand is undefined, an error occurs.

Seperti operasi AND logika di Java, operasi AND logika di ECMAScript juga operasi sederhana, yaitu jika operand pertama menentukan hasil, operand kedua tidak lagi dihitung. Untuk operasi AND logika, jika operand pertama adalah false, maka tidak peduli nilai operand kedua, hasilnya tidak akan pernah sama dengan true.

Berikan contoh di bawah ini:

var bTrue = true;
var bResult = (bTrue && bUnknown); // terjadi kesalahan
alert(bResult); // baris ini tidak akan dijalankan

Kode ini akan memicu kesalahan saat melakukan operasi AND logika, karena variabel bUnknown belum didefinisi. Nilai variabel bTrue adalah true karena operasi AND logika akan terus menghitung variabel bUnknown. Hal ini akan memicu kesalahan karena nilai bUnknown adalah undefined dan tidak dapat digunakan dalam operasi AND logika.

Jika mengubah contoh ini, mengatur angka pertama menjadi false, maka tidak akan terjadi kesalahan:

var bFalse = false;
var bResult = (bFalse && bUnknown);
alert(bResult); // menampilkan "false"

Dalam kode ini, skrip akan menampilkan nilai operasi AND logika, yaitu string "false". Meskipun nilai variabel bUnknown adalah undefined, ia tidak akan dihitung karena nilai operand pertama adalah false.

Tip:When using the logical AND operator, remember its simple calculation feature.

Logical OR Operator

The logical OR operator in ECMAScript is the same as in Java, represented by double vertical bars (||):

var bTrue = true;
var bFalse = false;
var bResult = bTrue || bFalse;

The following truth table describes the behavior of the logical OR operator:

Operand 1 Operand 2 Result
true true true
true false true
false true true
false false false

Similar to the logical AND operator, if an operand is not a Boolean value, the logical OR operator does not necessarily return a Boolean value:

  • If an operand is an object and all operands to the left of it are false, then return the object.
  • If both operands are objects, return the first object.
  • If the last operand is null and all other operand values are false, then return null.
  • If the last operand is NaN and all other operand values are false, then return NaN.
  • If any operand is undefined, an error occurs.

Like the logical AND operator, logical OR is also a simple operation. For the logical OR operator, if the first operand value is true, the second operand will not be calculated.

For example:

var bTrue = true;
var bResult = (bTrue || bUnknown);
alert(bResult); // Output "true"

Like the previous example, the variable bUnknown is undefined. However, since the value of bTrue is true, bUnknown will not be calculated, so the output is "true".

If bTrue is changed to false, an error will occur:

var bFalse = false;
var bResult = (bFalse || bUnknown); // An error occurs
alert(bResult); // This line will not be executed