Operator perbandingan

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"?

===
==
=
!=