Operator perbandingan membandingkan nilai dari dua operand dan mengevaluasi apakah
pernyataan yang dibuat adalah true
atau false
. Contoh berikut menggunakan
operator persamaan 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 jenis dan kesetaraan
Dua dari operator perbandingan yang paling sering digunakan adalah ==
untuk kesetaraan longgar dan ===
untuk kesetaraan yang ketat. ==
melakukan perbandingan longgar antara dua
nilai dengan memaksa operand agar cocok dengan jenis data, jika memungkinkan. Misalnya, 2 == "2"
menampilkan true
, meskipun perbandingan sedang 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 persis.
2 != 3
> true
2 != "2"
> false
Perbandingan ketat yang menggunakan ===
atau !==
tidak melakukan pemaksaan jenis. Untuk
perbandingan ketat yang akan dievaluasi dengan 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 disebabkan oleh pemaksaan otomatis, gunakan ===
jika memungkinkan.
Operator | Deskripsi | Penggunaan | Hasil |
---|---|---|---|
=== | Sangat sama | 2 === 2 | true |
!== | Tidak sama persis | 2 !== "2" | true |
== | Sama (atau "sangat 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 |
Truthy dan falsy
Semua nilai di JavaScript secara implisit merupakan true
atau false
, dan dapat dikonversi menjadi nilai boolean yang sesuai—misalnya, dengan menggunakan pembanding "longgar sama". Kumpulan nilai terbatas akan dikonversi ke false
:
0
null
undefined
NaN
- String kosong (
""
)
Semua nilai lain dikonversi menjadi true
, termasuk string yang berisi satu atau beberapa
karakter dan semua angka selain nol. Ini biasanya disebut nilai-nilai "truthy" dan "falsy".
"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 pernyataan bersyarat:
2 === 3 || 5 === 5;
> true
2 === 2 && 2 === "2"
> false
2 === 2 && !"My string."
> false
Ekspresi NOT (!
) logis meniadakan nilai benar atau salah dari operand, yang dievaluasi ke true
jika operand bernilai false
, dan false
jika operand bernilai true
:
true
> true
!true
> false
!false
> true
Menggunakan operator NOT logis (!
) di depan jenis data lain, seperti angka atau string, memaksa nilai tersebut menjadi boolean dan membalikkan nilai hasil yang benar atau salah.
"string"
> "string"
!"string"
> false
0
> 0
!0
> true
Menggunakan dua operator NOT untuk memaksa data ke nilai boolean yang cocok adalah praktik yang umum:
!!"string"
> true
!!0
> false
Operator AND dan OR logis tidak melakukan pemaksaan apa pun dengan sendirinya. Operasi menampilkan nilai salah satu dari dua operand yang dievaluasi, dengan operand yang dipilih yang ditentukan oleh evaluasi tersebut.
Logika AND (&&
) menampilkan operand pertama dari dua operand-nya hanya jika operand
bernilai false
, dan operand kedua jika tidak. Dalam perbandingan yang
mengevaluasi nilai boolean, metode ini akan menampilkan true
hanya jika operand di kedua sisi
logika AND bernilai true
. Jika salah satu sisi bernilai false
, false
akan ditampilkan.
true && false
> false
false && true
> false
false && false
> false
true && true
> true
Jika &&
digunakan dengan dua operand non-boolean, operand pertama akan ditampilkan
tidak berubah jika dapat dipaksa menjadi false
. Jika operand pertama dapat dipaksa
menjadi 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 logis (||
) menampilkan yang pertama dari dua operand-nya hanya jika operand tersebut
bernilai true
, dan operand kedua jika tidak. Dalam perbandingan yang
mengevaluasi nilai boolean, ini berarti metode tersebut akan menampilkan true
jika salah satu operand
bernilai true
, dan jika tidak ada sisi bernilai true
, metode ini akan menampilkan
false
:
true || false
> true
false || true
> true
true || true
> true
false || false
> false
Saat menggunakan ||
dengan dua operand non-boolean, operand pertama akan ditampilkan
tidak berubah jika dapat dikonversi menjadi true
. Jika operand pertama dapat dipaksa
menjadi 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 null
Diperkenalkan pada ES2020,
"operator penggabungan null" (??
) menampilkan operand pertama hanya jika
operand tersebut memiliki nilai selain null
atau undefined
. Jika tidak, operand kedua akan ditampilkan.
null ?? "My string"
> "My string"
undefined ?? "My string"
> "My string"
true ?? "My string";
> true
??
mirip dengan logika OR, tetapi cara evaluasi operand pertamanya
lebih ketat. ||
menampilkan operand kedua untuk ekspresi apa pun yang dapat
dipakskan ke false
, termasuk undefined
dan null
. ??
menampilkan operand kedua
jika operand pertama berupa apa pun selain null
atau undefined
, meskipun
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. Contoh yang paling umum adalah satu tanda sama dengan (=
), yang digunakan untuk
menetapkan nilai ke variabel yang dideklarasikan.
Gunakan operator penetapan logis untuk menetapkan nilai secara bersyarat ke suatu variabel berdasarkan nilai benar atau salah dari variabel tersebut.
Operator penetapan AND logis (&&=
) mengevaluasi operand kedua dan
menetapkannya ke operand pertama jika hanya jika operand pertama akan dievaluasi ke
true
—secara efektif, "jika operand pertama bernilai benar, tetapkan nilai
dari operand kedua:"
let myVariable = false;
myVariable &&= 2 + 2;
> false
myVariable = true;
myVariable &&= 2 + 2;
> 4
Nilai kebenaran 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
ditetapkan ke nilai:
let myVariable = 5;
myVariable > 2 &&= "My string"
> SyntaxError: Invalid left-hand side in assignment
Operator penetapan OR logis (||=
) mengevaluasi operand kedua dan
menetapkannya ke operand pertama jika operand pertama bernilai false
—
secara efektif "jika operand pertama bernilai false, tetapkan nilai operand
operand kedua:"
let myVariable = false;
myVariable ||= 2 + 2;
> 4
myVariable = true;
myVariable ||= 2 + 2;
> true
Menguji pemahaman Anda
Operator mana yang menunjukkan "sangat sama"?
===
==
=
!=