Operator perbandingan

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

===
==
=
!=