Operator perbandingan membandingkan nilai dua operand dan mengevaluasi apakah
pernyataan yang mereka bentuk adalah true
atau false
. Contoh berikut menggunakan
operator kesetaraan ketat (===
) untuk membandingkan dua operand: ekspresi
2 + 2
dan nilai 4
. Karena hasil ekspresi dan nilai
angka 4
sama, ekspresi ini bernilai true
:
2 + 2 === 4
> true
Pemaksaan dan kesetaraan jenis
Dua operator perbandingan yang paling sering digunakan adalah ==
untuk persamaan longgar
dan ===
untuk persamaan ketat. ==
melakukan perbandingan longgar antara dua
nilai dengan memaksa operand ke jenis data yang cocok, jika memungkinkan. Misalnya, 2 == "2"
menampilkan true
, meskipun perbandingan dilakukan
antara nilai angka dan nilai string.
2 == 2
> true
2 == "2"
> true
Hal yang sama berlaku untuk !=
, yang menampilkan true
hanya jika operand yang
dibandingkan tidak sama secara longgar.
2 != 3
> true
2 != "2"
> false
Perbandingan ketat menggunakan ===
atau !==
tidak melakukan konversi jenis. Agar perbandingan ketat dievaluasi ke true
, nilai yang dibandingkan harus memiliki jenis data yang sama. Oleh karena itu, 2 == "2"
menampilkan true
, tetapi 2 === "2"
menampilkan false
:
2 === 3
> false
2 === "2"
> false
Untuk menghapus ambiguitas yang mungkin dihasilkan dari konversi otomatis, gunakan ===
jika
memungkinkan.
Operator | Deskripsi | Penggunaan | Hasil |
---|---|---|---|
=== | Sama persis | 2 === 2 | true |
!== | Tidak sama persis | 2 !== "2" | true |
== | Sama (atau "secara longgar sama") | 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 |
Benar dan salah
Semua nilai dalam JavaScript secara implisit adalah true
atau false
, dan dapat dikonversi ke
nilai boolean yang sesuai—misalnya, dengan menggunakan pembanding "loosely equal". Serangkaian nilai terbatas dikonversi ke false
:
0
null
undefined
NaN
- String kosong (
""
)
Semua nilai lainnya dikonversi menjadi true
, termasuk string apa pun yang berisi satu atau beberapa karakter dan semua angka non-nol. Nilai ini biasanya disebut nilai "benar" dan
"salah".
"My string" == true
> true
100 == true
> true
0 == true
> false
Operator logika
Gunakan operator AND (&&
), OR (||
), dan NOT (!
) logis untuk mengontrol alur skrip berdasarkan evaluasi dua pernyataan kondisional atau lebih:
2 === 3 || 5 === 5;
> true
2 === 2 && 2 === "2"
> false
2 === 2 && !"My string."
> false
Ekspresi NOT (!
) logika meniadakan nilai benar atau salah dari operand, yang dievaluasi menjadi true
jika operand dievaluasi menjadi false
, dan false
jika operand dievaluasi menjadi true
:
true
> true
!true
> false
!false
> true
Menggunakan operator NOT logika (!
) di depan jenis data lain, seperti
angka atau string, akan memaksa nilai tersebut menjadi boolean dan membalikkan nilai truthy atau
falsy dari hasilnya.
"string"
> "string"
!"string"
> false
0
> 0
!0
> true
Praktik umum adalah menggunakan dua operator NOT untuk memaksa data dengan cepat ke nilai boolean yang cocok:
!!"string"
> true
!!0
> false
Operator logika AND dan OR tidak melakukan pemaksaan apa pun dengan sendirinya. Operator ini menampilkan nilai salah satu dari dua operand yang dievaluasi, dengan operand yang dipilih ditentukan oleh evaluasi tersebut.
AND Logika (&&
) menampilkan operand pertama dari dua operandnya hanya jika operand tersebut
dievaluasi menjadi false
, dan operand kedua jika sebaliknya. Dalam perbandingan yang
dievaluasi menjadi nilai boolean, fungsi ini hanya menampilkan true
jika operand di kedua sisi
AND logika dievaluasi menjadi true
. Jika salah satu sisi bernilai false
, sisi tersebut
akan menampilkan false
.
true && false
> false
false && true
> false
false && false
> false
true && true
> true
Jika &&
digunakan dengan dua operand non-boolean, operand pertama akan ditampilkan
tanpa perubahan jika dapat dikonversi ke false
. Jika operand pertama dapat dikonversi
ke true
, operand kedua akan 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"
OR Logika (||
) menampilkan operand pertama dari dua operandnya hanya jika operand tersebut
dievaluasi menjadi true
, dan operand kedua jika sebaliknya. Dalam perbandingan yang
dievaluasi ke nilai boolean, ini berarti fungsi akan menampilkan true
jika salah satu operand
dievaluasi ke true
, dan jika tidak ada sisi yang dievaluasi ke true
, fungsi akan menampilkan
false
:
true || false
> true
false || true
> true
true || true
> true
false || false
> false
Saat menggunakan ||
dengan dua operand non-boolean, fungsi ini akan menampilkan operand pertama
tanpa perubahan jika dapat dikonversi ke true
. Jika operand pertama dapat dikonversi
ke false
, operand kedua akan 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 di ES2020,
"operator penggabungan nullish" (??
) hanya menampilkan operand pertama jika
operand tersebut memiliki nilai selain null
atau undefined
. Jika tidak, metode ini akan menampilkan
operand kedua.
null ?? "My string"
> "My string"
undefined ?? "My string"
> "My string"
true ?? "My string";
> true
??
mirip dengan OR logika, tetapi lebih ketat dalam cara operand pertama
dievaluasi. ||
menampilkan operand kedua untuk ekspresi apa pun yang dapat
diubah menjadi false
, termasuk undefined
dan null
. ??
menampilkan operand kedua hanya jika operand pertama sama persis dengan null
atau undefined
, meskipun dapat dikonversi ke 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. Contoh yang paling umum adalah satu tanda sama dengan (=
), yang digunakan untuk
menetapkan nilai ke variabel yang dideklarasikan.
Gunakan operator penetapan logika untuk menetapkan nilai ke variabel secara bersyarat berdasarkan nilai benar atau salah dari variabel tersebut.
Operator penetapan AND logika (&&=
) mengevaluasi operand kedua dan
menetapkan ke operand pertama jika hanya jika operand pertama akan dievaluasi menjadi
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 benar atau salah dari operand pertama menentukan apakah penetapan
dilakukan. Namun, mencoba mengevaluasi operand pertama menggunakan operator perbandingan akan 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 logika (||=
) mengevaluasi operand kedua dan
menetapkan ke operand pertama jika operand pertama dievaluasi menjadi false
—
secara efektif "jika operand pertama bernilai salah, tetapkan nilai operand kedua:"
let myVariable = false;
myVariable ||= 2 + 2;
> 4
myVariable = true;
myVariable ||= 2 + 2;
> true
Memeriksa pemahaman Anda
Operator mana yang menunjukkan "sama persis"?
===
==
=
!=