Operator Logika JavaScript: AND, OR, dan NOT
Operator logika merupakan salah satu jenis operator JavaScript yang sering digunakan saat membuat aplikasi.
Biasanya digunakan dengan conditional statement dan nilai Boolean sebagai operan.
Tapi kita juga bisa menjadikan ekspresi atau nilai truthy dan falsy sebagai operan.
Tidak seperti operator perbandingan yang selalu mengembalikan nilai boolean, operator logika dapat mengembalikan nilai selain boolean.
Mari kita pelajari lebih lanjut...
AND (&&
)
Operator &&
hanya akan menghasilkan nilai true
jika ekspresi atau operan di kiri dan kanan bernilai true
.
Sintaks:
ekspresi1 && ekspresi2
Contoh:
true && true; // true
true && false; // false
false && true; // false
false && false; // false
2 < 3 && 6 < 8; // true && true = true
2 < 3 && 6 > 8; // true && false = false
2 > 3 && 6 < 8; // false && true = false
2 > 3 && 6 > 8; // false && false = false
Sebetulnya JavaScript mengembalikan nilai salah satu operan.
Jadi, jika operator ini digunakan dengan nilai non-boolean, dapat mengembalikan nilai non-boolean.
Rumusnya:
Jika ekspresi disebelah kiri bernilai
true
, yang dikembalikan adalah nilai di sebelah kanan.Jika kiri
false
, maka nilai kiri yang dikembalikan.
Bagaimana jika ekspresi tidak menghasilkan nilai boolean? dipaksa menjadi boolean, ini sudah kita pelajari pada materi truthy dan falsy.
Mari kita lihat contoh ekspresi kiri bernilai false
:
'' && 'hello world'; // ''
Ini yang dilakukan JavaScript:
- Konversi string kosong
''
ke boolean, hasilnyafalse
. - Karena hasilnya
false
, JavaScript akan langsung mengembalikan''
tanpa mengevaluasi ekspresi di kanan.
Mari kita lihat contoh ekspresi kiri bernilai true
.
'hello reza' && 'hello world'; // hello world
Ini yang dilakukan JavaScript:
- Konversi string
'hello reza'
ke boolean, hasilnyatrue
. - Karena hasilnya
true
, evaluasi dan kembalikan ekspresi di sebelah kanan.
Short-circuit Evaluation
Expresi pada operator &&
dievaluasi dari kiri ke kanan sehingga memungkinkan evaluasi short-circuit.
Jika ekspresi di kiri bernilai false
, maka ekspresi di kanan tidak akan dievaluasi.
Sedangkan jika ekspresi di kiri bernilai true
, maka ekspresi di kanan akan dievaluasi.
Ini aturannya:
false && ekspresi
, ekspresi tidak dievaluasi.true && ekspresi
, ekspresi dievaluasi.
OR (||
)
Operator OR (||
) hanya akan menghasilkan nilai false
jika ekspresi di kiri dan kanan bernilai false
.
Sintaks:
ekspresi1 || ekspresi2
Contoh:
true || true; // true
true || false; // true
false || true; // true
false || false; // false
2 < 3 || 6 < 8; // true || true = true
2 < 3 || 6 > 8; // true || false = true
2 > 3 || 6 < 8; // false || true = true
2 > 3 || 6 > 8; // false || false = false
Sama seperti AND, sebetulnya JavaScript mengembalikan nilai salah satu operan.
Jadi, jika operator ini digunakan dengan nilai non-boolean, dapat mengembalikan nilai non-boolean.
Rumusnya:
Jika ekspresi disebelah kiri bernilai
false
, yang dikembalikan adalah nilai di sebelah kanan.Jika kiri
true
, maka nilai kiri yang dikembalikan.
Bagaimana jika operan tidak bernilai atau menghasilkan nilai boolean? dipaksa menjadi boolean.
Mari kita lihat contoh ekspresi kiri bernilai false
:
'' || 'hello world'; // hello world
Ini yang dilakukan JavaScript:
- Konversi string kosong
''
ke boolean, hasilnyafalse
. - Karena hasilnya
false
, evaluasi dan kembalikan ekspresi di sebelah kanan.
Mari kita lihat contoh ekspresi kiri bernilai true
:
'hello reza' && 'hello world'; // hello world
Ini yang dilakukan JavaScript:
- Konversi string
'hello reza'
ke boolean, hasilnyatrue
. - Karena kiri bernilai
true
, evaluasi dan kembalikan ekspresi di sebelah kanan.
Short-circuit Evaluation
Sama seperti AND, expresi pada operator ||
dievaluasi dari kiri ke kanan sehingga memungkinkan evaluasi short-circuit.
Jika ekspresi di kiri bernilai false
, maka evaluasi ekspresi di kanan.
Jika ekspresi di kiri bernilai true
, maka ekspresi di kanan tidak akan dievaluasi.
Ini aturannya:
false || ekspresi
, ekspresi dievaluasi.true || ekspresi
, ekspresi tidak dievaluasi.
Prioritas Operator OR (||
) dan AND (&&
)
Dalam kondisi tertentu terkadang kita perlu menulis atau menggabungkan operator AND dengan OR dalam satu statement.
Jika ini dilakukan operator &&
akan dieksekusi terlebih dahulu sebelum ||
.
Tapi kita bisa membungkus ekspresi menggunkaan kurung lengkung (( ... )
) agar dieksekusi terlebih dahulu.
Contoh:
true || (false && false); // true
(true || false) && false; // false
NOT (!
)
Operator NOT !
atau negasi mengubah nilai truthy menjadi falsy atau sebaliknya.
Sintaks:
!ekspresi
Contoh:
!true; // false
!false; // true
!''; // true
!1; // false
!(true && true); // false
Kita juga bisa menggunakan beberapa operator NOT secara bersamaan.
Untuk mengkonversi nilai apa pun ke boolean sesuai truthy dan falsy, gunakan dua buah operator NOT.
Contoh:
!!true; // true
!!{}; // true
!![]; // true
!!''; // false