Operator perbandingan membandingkan nilai dari dua operand dan mengevaluasi apakah
yang mereka buat adalah true
atau false
. Contoh berikut menggunakan
Operator kesetaraan ketat (===
) untuk membandingkan dua operand: ekspresi
2 + 2
dan nilai 4
. Karena hasil ekspresi dan bilangan
nilai 4
sama, ekspresi ini bernilai true
:
2 + 2 === 4
> true
Paksaan dan kesetaraan jenis
Dua operator perbandingan yang paling sering digunakan adalah ==
untuk kesamaan longgar
dan ===
untuk kesetaraan yang ketat. ==
melakukan perbandingan tetap antara dua
dengan memaksa operand ke jenis data yang cocok, jika memungkinkan. Sebagai
misalnya, 2 == "2"
menampilkan true
, meskipun perbandingan sedang dibuat
antara nilai angka dan nilai {i>string<i}.
2 == 2
> true
2 == "2"
> true
Hal yang sama berlaku untuk !=
, yang menampilkan true
hanya jika operand yang
dibandingkan tidak sama longgar.
2 != 3
> true
2 != "2"
> false
Perbandingan ketat yang menggunakan ===
atau !==
tidak melakukan pemaksaan jenis. Untuk
yang ketat untuk mengevaluasi true
, nilai yang dibandingkan harus memiliki
tipe data yang sama. Karena itu, 2 == "2"
menampilkan true
, tetapi 2 === "2"
menampilkan false
:
2 === 3
> false
2 === "2"
> false
Untuk menghilangkan ambiguitas yang mungkin disebabkan oleh paksaan otomatis, gunakan ===
kapan pun
sebaik mungkin.
Operator | Deskripsi | Penggunaan | Hasil |
---|---|---|---|
=== | Sama persis | 2 === 2 | true |
!== | Tidak sama persis | 2 !== "2" | true |
== | Sama (atau "sama longgar") | 2 == "2" | true |
!= | Tidak sama dengan | 2 != "3" | true |
> | Lebih dari | 3 > 2 | true |
>= | Lebih dari atau sama dengan | 2 >= 2 | true |
< | Kurang dari | 2 < 3 | true |
<= | Kurang dari atau sama dengan | 2 <= 3 | true |
Jujur dan salah
Semua nilai di JavaScript secara implisit adalah true
atau false
, dan dapat dipaksa menjadi
nilai boolean yang sesuai—misalnya, dengan menggunakan variabel "sama longgar"
pembanding. Serangkaian nilai terbatas memaksa false
:
0
null
undefined
NaN
- String kosong (
""
)
Semua nilai lainnya dikonversi ke true
, termasuk string yang berisi satu atau beberapa
karakter dan semua angka bukan nol. Hal ini biasanya disebut "{i>truthy<i}" dan
"falsy" masing-masing.
"My string" == true
> true
100 == true
> true
0 == true
> false
Operator logika
Gunakan operator logika AND (&&
), OR (||
), dan NOT (!
) untuk mengontrol alur skrip berdasarkan evaluasi dua atau lebih pernyataan kondisional:
2 === 3 || 5 === 5;
> true
2 === 2 && 2 === "2"
> false
2 === 2 && !"My string."
> false
Ekspresi logika NOT (!
) menegasikan nilai operand yang benar atau salah, mengevaluasi ke true
jika operand mengevaluasi ke false
, dan false
jika operand mengevaluasi ke true
:
true
> true
!true
> false
!false
> true
Menggunakan operator NOT logis (!
) di depan jenis data lainnya, seperti
atau string, memaksa nilai itu ke boolean dan membalikkan kebenaran atau
nilai palsu dari hasil.
"string"
> "string"
!"string"
> false
0
> 0
!0
> true
Praktik yang umum adalah menggunakan dua operator NOT untuk nilai boolean yang cocok:
!!"string"
> true
!!0
> false
Operator AND dan OR logis tidak melakukan pemaksaan sendiri. Mereka mengembalikan nilai salah satu dari dua operand yang dievaluasi, dengan pilihan operand yang ditentukan oleh evaluasi tersebut.
Logika AND (&&
) menampilkan bagian pertama dari dua operand-nya hanya jika operand tersebut
mengevaluasi ke false
, dan operand kedua sebaliknya. Dalam perbandingan yang
mengevaluasi ke nilai boolean, fungsi ini akan menampilkan true
hanya jika operand di kedua sisi
dari logika AND dievaluasi ke true
. Jika salah satu sisi bernilai false
, maka
akan menampilkan false
.
true && false
> false
false && true
> false
false && false
> false
true && true
> true
Saat &&
digunakan dengan dua operand non-boolean, operand pertama ditampilkan
tidak berubah jika dapat dikonversi menjadi false
. Jika operand pertama dapat dikonversi
ke true
, operand kedua ditampilkan tanpa perubahan:
false && "My string"
> false
null && "My string"
> null
"My string" && false
> false
"My string" && "My second string"
> "My second string"
2 === 2 && "My string"
> "My string"
Logika OR (||
) menampilkan bagian pertama dari dua operand-nya hanya jika operand tersebut
mengevaluasi ke true
, dan operand kedua sebaliknya. Dalam perbandingan yang
mengevaluasi ke nilai boolean, ini berarti metode ini menampilkan true
jika salah satu operand
bernilai true
, dan jika tidak ada sisi yang bernilai true
, akan ditampilkan
false
:
true || false
> true
false || true
> true
true || true
> true
false || false
> false
Saat menggunakan ||
dengan dua operand non-boolean, metode ini akan menampilkan operand pertama
tidak berubah jika bisa dikonversi menjadi true
. Jika operand pertama dapat dikonversi
ke false
, operand kedua ditampilkan tanpa perubahan:
false || "My string"
> "My string"
null || "My string"
> "My string"
"My string" || false
> "My string"
"My string" || "My second string"
> "My string"
2 === 2 || "My string"
> true
Operator penggabungan nullish
Diperkenalkan dalam ES2020,
"operator penggabungan nullish" (??
) menampilkan operand pertama hanya jika
operand memiliki nilai apa pun selain null
atau undefined
. Jika tidak, metode ini akan
operand kedua.
null ?? "My string"
> "My string"
undefined ?? "My string"
> "My string"
true ?? "My string";
> true
??
mirip dengan OR logis, tetapi lebih ketat dalam cara operand pertama
dievaluasi. ||
menampilkan operand kedua untuk ekspresi yang dapat
dikonversi menjadi false
, termasuk undefined
dan null
. ??
menampilkan detik
operand saat operand pertama berupa apa pun selain null
atau undefined
, bahkan jika itu
dapat dikonversi menjadi false
:
0 ?? "My string";
> 0
false ?? "My string";
> false
undefined ?? "My string";
> "My string"
Operator penetapan logika
Gunakan operator penetapan untuk menetapkan nilai operator kedua ke operator pertama
operator. Contoh yang paling umum adalah tanda sama dengan (=
) tunggal, yang digunakan untuk
menetapkan nilai ke variabel yang dideklarasikan.
Menggunakan operator penetapan logis untuk menetapkan nilai ke suatu variabel secara bersyarat berdasarkan nilai benar atau falsy dari variabel tersebut.
Operator logika AND penugasan (&&=
) mengevaluasi operand kedua dan
ditetapkan ke operand pertama jika satu-satunya jika operand pertama akan mengevaluasi
true
—secara efektif, "jika operand pertama benar, tetapkan nilai
operand kedua:"
let myVariable = false;
myVariable &&= 2 + 2;
> false
myVariable = true;
myVariable &&= 2 + 2;
> 4
Nilai truthy (benar) atau falsy (salah) dari operand pertama menentukan apakah suatu penetapan
dilakukan. Namun, mencoba mengevaluasi operand pertama menggunakan perbandingan
operator menghasilkan boolean true
atau false
, yang tidak dapat diberi
nilai:
let myVariable = 5;
myVariable > 2 &&= "My string"
> SyntaxError: Invalid left-hand side in assignment
Operator penetapan OR logis (||=
) mengevaluasi operand kedua dan
tetapkan ke operand pertama jika operand pertama bernilai false
—
secara efektif "jika operand pertama salah, tetapkan nilai
operand sebagai gantinya:"
let myVariable = false;
myVariable ||= 2 + 2;
> 4
myVariable = true;
myVariable ||= 2 + 2;
> true
Menguji pemahaman Anda
Operator manakah yang menunjukkan "sama persis"?
==
===
!=
=