Pada tutorial ini, Anda akan mempelajari cara menggunakan operator logika JavaScript, termasuk operator NOT logika (!), operator AND logika (&&), dan operator OR logika (||).
Operator logika sangat penting dalam JavaScript karena memungkinkan Anda untuk membandingkan variabel dan melakukan sesuatu berdasarkan hasil perbandingan tersebut.
Sebagai contoh, jika hasil perbandingan adalah benar, Anda dapat menjalankan blok kode; jika salah, Anda dapat menjalankan blok kode lain.
JavaScript menyediakan tiga operator logika:
1. Operator NOT Logika (!)
JavaScript menggunakan tanda seru (!) untuk merepresentasikan operator NOT logika. Operator ! dapat diterapkan pada nilai tunggal dari jenis apa pun, bukan hanya nilai Boolean.
Ketika Anda menerapkan operator ! pada nilai boolean, ! mengembalikan true jika nilai tersebut adalah false dan sebaliknya. Contoh:
let eligible = false,
required = true;
console.log(!eligible);
console.log(!required);
Output:
true
false
Pada contoh ini, eligible adalah true sehingga !eligible mengembalikan false. Dan karena required adalah true, !required mengembalikan false.
Ketika Anda menerapkan operator ! pada nilai non-Boolean, operator ! pertama-tama mengonversi nilai tersebut menjadi nilai boolean dan kemudian mengubahnya.
Berikut contoh penggunaan operator !:
!a
Operator ! bekerja berdasarkan aturan berikut:
- Jika a tidak terdefinisi (undefined), hasilnya adalah true.
- Jika a null, hasilnya adalah true.
- Jika a adalah angka selain 0, hasilnya adalah false.
- Jika a adalah NaN, hasilnya adalah true.
- Jika a adalah objek, hasilnya adalah false.
- Jika a adalah string kosong, hasilnya adalah true. Jika a adalah string yang tidak kosong, hasilnya adalah false.
Berikut contoh hasil operator ! logika saat diterapkan pada nilai non-boolean:
console.log(!undefined); // true
console.log(!null); // true
console.log(!20); // false
console.log(!0); // true
console.log(!NaN); // true
console.log(!{}); // false
console.log(!''); // true
console.log(!'OK'); // false
console.log(!false); // true
console.log(!true); // false
Pendobel-negation (!!) Terkadang, Anda mungkin melihat pengebalan ganda (!!) dalam kode. !! menggunakan operator NOT logika (!) dua kali untuk mengonversi nilai ke nilai boolean yang sebenarnya.
Hasilnya sama dengan menggunakan fungsi Boolean(). Contoh:
let counter = 10;
console.log(!!counter); // true
Operator ! pertama mengubah nilai boolean dari variabel counter. Jika counter adalah true, maka operator ! membuatnya menjadi false dan sebaliknya.
Operator ! kedua meniadakan hasil dari operator ! pertama dan mengembalikan nilai boolean sebenarnya dari variabel counter.
2. Operator AND Logika (&&)
JavaScript menggunakan dua tanda dan (&&) untuk merepresentasikan operator AND logika. Ekspresi berikut menggunakan operator &&:
let result = a && b;
Jika a dapat diubah menjadi true, operator && mengembalikan b; jika tidak, mengembalikan a. Aturan ini diterapkan pada semua nilai boolean.
Tabel kebenaran berikut menggambarkan hasil operator && ketika diterapkan pada dua nilai Boolean:
a | b | a && b |
---|---|---|
true | true | true |
true | false | false |
false | true | false |
false | false | false |
Hasil dari operator && adalah true hanya jika kedua nilai adalah true, jika tidak, hasilnya adalah false. Contoh:
let eligible = false,
required = true;
console.log(eligible && required); // false
Pada contoh ini, eligible adalah false, oleh karena itu, nilai dari ekspresi eligible && required adalah false.
Lihat contoh berikut:
let eligible = true,
required = true;
console.log(eligible && required); // true
Pada contoh ini, baik eligible maupun required adalah true, sehingga nilai dari ekspresi eligible && required adalah true.
Evaluasi Langsung Operator && bersifat terputus-putus. Ini berarti operator && mengevaluasi nilai kedua hanya jika nilai pertama tidak cukup untuk menentukan nilai ekspresi. Contoh:
let b = true;
let result = b && (1 / 0);
console.log(result);
Output:
Infinity
Pada contoh ini, b adalah true sehingga operator && tidak dapat menentukan hasil tanpa mengevaluasi lebih lanjut ekspresi kedua (1/0).
Hasilnya adalah Infinity, yang merupakan hasil dari ekspresi (1/0). Namun:
let b = false;
let result = b && (1 / 0);
console.log(result);
Output:
false
Dalam kasus ini, b adalah false, operator && tidak perlu mengevaluasi ekspresi kedua karena dapat menentukan hasil akhir sebagai false berdasarkan nilai pertama.
Rantai operator && Ekspresi berikut menggunakan beberapa operator &&:
let result = value1 && value2 && value3;
Operator && membawa hal berikut:
- Mengevaluasi nilai dari kiri ke kanan.
- Untuk setiap nilai, mengonversinya menjadi nilai boolean. Jika hasilnya adalah false, berhenti dan kembali ke nilai asli.
- Jika semua nilai adalah nilai yang benar, kembali ke nilai terakhir.
Dengan kata lain, operator && mengembalikan nilai yang pertama kali ditemui yang bernilai salah atau nilai terakhir jika tidak ada yang ditemukan.
Jika nilai dapat diubah menjadi true, disebut sebagai nilai yang benar. Jika nilai dapat diubah menjadi false, disebut sebagai nilai yang salah.
3. Operator OR Logika (||)
JavaScript menggunakan dua garis vertikal || untuk merepresentasikan operator OR logika. Anda dapat menerapkan operator || pada dua nilai dari jenis apa pun:
let result = a || b;
Jika a dapat diubah menjadi true, mengembalikan a; jika tidak, mengembalikan b. Aturan ini juga diterapkan pada nilai boolean.
Tabel kebenaran berikut menggambarkan hasil operator || berdasarkan nilai operand:
a | b | a || b |
---|---|---|
true | true | true |
true | false | true |
false | true | true |
false | false | false |
Operator || mengembalikan false jika kedua nilai menghasilkan false. Jika salah satu nilai adalah true, operator || mengembalikan true. Contoh:
let eligible = true,
required = false;
console.log(eligible || required); // true
Lihat contoh lain:
let eligible = false,
required = false;
console.log(eligible || required); // false
Pada contoh ini, ekspresi eligible || required mengembalikan false karena kedua nilai adalah false.
Operator || juga terputus-putus Sama seperti operator &&, operator || terputus-putus. Ini berarti jika nilai pertama menghasilkan true, operator && tidak mengevaluasi yang kedua.
Rantai operator || Contoh berikut menunjukkan cara menggunakan beberapa operator || dalam suatu ekspresi:
let result = value1 || value2 || value3;
Operator || melakukan hal berikut:
- Mengevaluasi nilai dari kiri ke kanan.
- Untuk setiap nilai, mengonversinya menjadi nilai boolean. Jika hasil konversinya adalah true, berhenti dan kembali ke nilai tersebut.
- Jika semua nilai telah dievaluasi menjadi false, kembali ke nilai terakhir.
Dengan kata lain, rantai operator || mengembalikan nilai yang pertama kali ditemui yang bernilai benar atau yang terakhir jika tidak ada yang ditemukan.
Urutan preseden operator logika Ketika Anda mencampur operator logika dalam suatu ekspresi, mesin JavaScript mengevaluasi operator berdasarkan urutan tertentu. Dan urutan ini disebut preseden operator.
Dengan kata lain, preseden operator adalah urutan evaluasi operator logika dalam suatu ekspresi.
Preseden operator logika adalah dalam urutan berikut dari tertinggi hingga terendah:
- NOT Logika (!)
- AND Logika (&&)
- OR Logika (||)
Ringkasan
- Operator NOT (!) meniadakan nilai boolean. (!!) mengonversi nilai ke nilai boolean yang sebenarnya.
- Operator AND (&&) diterapkan pada dua nilai boolean dan mengembalikan true jika kedua nilai adalah true.
- Operator OR (||) diterapkan pada dua nilai boolean dan mengembalikan true jika salah satu operand adalah true.
- Keduanya operator && dan || terputus-putus. Mereka juga dapat diterapkan pada nilai non-Boolean.
- Preseden operator logika dari tertinggi hingga terendah adalah !, &&, dan ||.