Operator Logika pada JavaScript

Terdapat tiga operator logika pada JavaScript yaitu (OR) ||, (AND) &&, dan (NOT) !.

Meskipun operator tersebut dinamakan dengan "logika", operator tersebut tidak dapat diterapkan pada jenis nilai apapun. Mari kita pelajari lebih dalam pada artikel ini.



Operator OR pada JavaScript

Operator "OR" (artinya adalah "atau") dapat ditulis dengan tanda garis vertikal seperti ||. Berikut adalah contohnya:

hasil = a || b


Pada pemrograman yang klasik, logika OR dimaksudkan untuk memanipulasi nilai boolean saja. Jika salah satu argumennya benar, maka hasilnya akan true, jika tidak, maka maka hasilnya akan false.

Pada JavaScript, operator agak sedikit lebih rumit dan lebih kuat. Tetapi pertama-tama, mari kita lihat apa yang terjadi dengan nilai boolean tersebut.

Terdapat empat kemungkinan dari kombinasi logika:

alert(true || true);   // true
alert(false || true);  // true
alert(true || false);  // true
alert(false || false); // false


Seperti contoh kode diatas, hasilnya selalu true kecuali untuk kasus ketika kedua operand adalah false.

Jika operand nya bukan boolean, maka operand itu akan diubah menjadi boolean untuk dapat di evaluasi.

Misalnya, angka 1 akan dianggap sebagai true dan angka 0 dianggap sebagai false:

if (1 || 0) { // bekerja seperti if( true || false )
    alert( 'benar!' );
}


Kebanyakan, operator OR || digunakan dalam statement if untuk menguji apakah kondisi yang diberikan adalah true. Contoh:

let jam = 9;

if (jam < 10 || jam > 18) {
    alert( 'Kantor sudah tutup.' );
}


Kita juga dapat melewati beberapa kondisi:

let jam = 12;
let hariLibur = true;

if (jam < 10 || jam > 18 || hariLibur) {
    alert( 'Kantor sudah tutup.' ); // sekarang hari libur
}


Mencari Nilai true dengan OR

Logika yang dijelaskan di atas terlihat agak klasik. Sekarang, mari kita lihat fitur tambahan dari JavaScript.

Algoritma dapat diperluas dan berfungsi dengan memberikan beberapa nilai OR. Contoh:

hasil = nilai1 || nilai2 || nilai3;


Operator OR || dapat melakukan hal berikut:
  • Mengevaluasi operand dari kiri ke kanan.
  • Mengubah setiap operand menjadi boolean. Jika hasilnya true, maka akan berhenti dan menghasilkan nilai asli dari operand tersebut.
  • Jika semua operand telah dievaluasi (Misalnya, Semuanya false), maka akan menghasilkan operand terakhir.

Nilai tersebut akan dihasilkan dalam bentuk aslinya, tanpa di konversi.

Dengan kata lain, urutan OR "||" akan menghasilkan nilai true pertama atau yang terakhir jika tidak ada nilai true yang ditemukan. Contoh:

alert(1 || 0); // 1 (1 adalah true)
alert(true || 'apapun'); // (true adalah true)

alert(null || 1); // 1 (1 adalah nilai true pertama)
alert(null || 0 || 1); // 1 (nilai true pertama)
alert(undefined || null || 0); // 0 (semuanya false, akan menghasilkan nilai terakhir)


Mendapatkan nilai true pertama dari daftar variabel atau ekspresi.

Bayangkan ketika kita memiliki daftar variabel yang dapat berisi data atau menjadi null/undefined. Bagaimana kita dapat menemukan yang pertama dengan menggunakan data?

Kita dapat menggunakan OR ||:

let userLama = null;
let userBaru = "Wahyu";

let nama = userLama || userBaru || "tidak diketahui";

alert(nama); // memilih "Wahyu" – nilai true pertama


Jika userLama dan userBaru adalah false, maka "tidak diketahui" akan menjadi hasilnya.

Evaluasi Jangka Pendek

Operand juga dapat berupa selain dari nilai, tetapi ekspresi yang berubah-ubah. OR dapat mengevaluasi dan mengujinya dari kiri ke kanan. Evaluasi tersebut akan berhenti ketika nilai true sudah tercapai, kemudian nilainya akan dikembalikan. Proses ini disebut Evaluasi Jangka Pendek (Short-Circuit) karena berjalan secara singkat dari kiri ke kanan.

Hal tersebut dapat terlihat jelas ketika ekspresi yang diberikan sebagai argumen kedua memiliki efek samping seperti penetapan variabel. Pada contoh di bawah ini, x tidak ditetapkan:

let x;
true || (x = 1);

alert(x); // undefined, karena (x = 1) tidak dievaluasi


Begitupula sebalikanya, jika argumennya adalah false, || akan mengevaluasi yang satunya lagi.

let x;
false || (x = 1);

alert(x); // 1


Penetapannya sangatlah sederhana. Mungkin terdapat efek samping yang tidak akan muncul jika evaluasi tersebut belum tercapai.

Seperti yang dapat kita lihat pada hasil dari kode diatas, seperti menggunakan cara yang lebih singkat dengan menggunakan if. Operand pertama akan diubah menjadi Boolean. Jika false, maka yang kedua akan di evaluasi.

Biasanya, sangat baik bagi kita untuk menggunakan cara biasa agar dapat di mengerti, tetapi terkadang hal tersebut sangatlah berguna.

Operator AND pada JavaScript

Operator AND (artinya "dan") dapat ditulis dengan tanda &&. Contoh:

hasil = a && b;


Dalam pemrograman klasik, AND akan menghasilkan true jika kedua operand adalah true dan false:

alert(true && true);   // true
alert(false && true);  // false
alert(true && false);  // false
alert(false && false); // false


Berikut adalah contoh dengan menggunakan if:

let jam = 12;
let menit = 30;

if (jam == 12 && menit == 30) {
    alert('Sekarang jam 12.30');
}


Sama seperti OR, semua nilai dapat diterapkan sebagai operand dari AND:

if (1 && 0) { // di evaluasi sebagai true && false
    alert( "Tidak akan bekerja, karena hasilnya adalah false" );
}


Mencari Nilai false Pertama dengan AND

Memberikan beberapa nilai AND:

hasil = nilai1 && nilai2 && nilai3;


Operator AND && akan melakukan hal berikut:
  • Mengevaluasi operand dari kiri ke kanan.
  • Setiap operand akan diubah menjadi boolean. Jika hasilnya false, maka akan berhenti dan mengembalikan nilai asli dari operand tersebut.
  • Jika semua operan telah di evaluasi (Misalnya, semuanya true), maka akan menghasilkan operand terakhir.

Dengan kata lain, AND akan menghasilkan nilai false pertama atau nilai terakhir jika tidak ditemukan.

Aturan diatas sama seperti OR. Perbedaannya adalah AND akan menghasilkan nilai false pertama sedangkan OR akan menghasilkan nilai true pertama. Contoh:

// jika operand pertama adalah true,
// AND akan menghasilkan operand kedua:
alert(1 && 0); // 0
alert(1 && 5); // 5

// jika operand pertama adalah false,
// AND akan mengahsilkannya. Operand kedua akan diabaikan
alert(null && 5); // null
alert(0 && "apapun"); // 0


Kita juga dapat melewati beberapa nilai. Berikut adalah contoh bagaimana nilai false pertama akan di hasilkan:

alert(1 && 2 && null && 3); // null


Ketika semua nilainya adalah false, maka nilai terakhirnya akan dihasilkan:

alert(1 && 2 && null && 3); // 3, terakhir


Prioritas AND && dan OR ||

Operator AND && prioritasnya lebih tinggi dari pada OR ||.

Jadi, kode a && b || c && dd sama seperti jika ekspresi && berada di dalam tanda kurung (a && b) || (c && d).

Sama seperti operator OR, operator AND terkadang dapat menggantikan if. Contoh:

let x = 1;

(x > 0) && alert('Lebih dari nol');


Varian dari && akan terlihat lebih pendek. Tetapi if lebih jelas dan cendering lebih sedikit dan dapat terbaca dengan mudah.

Jadi, sangat direkomendasikan untuk menggunakan konstruksi sesuai dengan tujuannya: Gunakan if jika kita ingin menggunakannya dan gunakan && jika kita ingin menggunakannya.

Operator NOT pada JavaScript

Operator boolean NOT (artinya "tidak") dapat ditulis dengan tanda seru "!". Penulisannya akan terlihat lebih sederhanya. Contoh:

hasil = !nilai;


Operator dapat menerima satu argumen dan dapat melakukan cara berikut:
  • Mengubah operand menjadi tipe boolean: true/false.
  • Menghasilkan nilai kebalikannya.

Perhatikan contoh berikut:

alert(!true); // false
alert(!0); // true


Tanda NOT !! terkadang digunakan untuk mengubah suatu nilai menjadi tipe boolean:

alert(!!"string yang tidak kosong"); // true
alert(!!null); // false

Tulis Komentar

0 Komentar