Operator perbandingan

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

===
==
!=
=