JS101 | Operator perbandingan di Javascript

Hendra 'hare' Sadewa
3 min readOct 25, 2021

--

Cocoklah untuk yang bingung dengan penggunaan statement yang butuh kondisi seperti looping, dan branching.

Operator persamaan ( == / === )

Di js, untuk membandingkan nilai antara dua buah primitive atau variabel dapat dilakukan dengan menggunakan operator persamaan. Operator persmaan dalam javascript terbagi menjadi dua, yaitu persamaan berdasarkan nilai atau equality (==), dan persamaan berdasarkan nilai dan tipe nya atau strict equality (===).

Contoh penggunaan:

1 == 1; // true
1 === 1; // true
1 == '1'; // true
1 === '1'; // false

Perlu diperhatikan saat membandingkan nilai dengan operator persamaan, jika ekspektasi dari nilai yang akan dibandingkan adalah sama dan tipenya pun juga sama, gunakanlah selalu operator persamaan strict equality, karena selain membandingkan nilai, tipe nya pun akan dicheck, contoh pada 1 === '1' akan menghasilkan false, karena nilainya benar sama, namun tipenya berbeda, yaitu number dan string.

Operator pertidaksamaan ( != / !== )

Selain persamaan, terdapat juga operator untuk check pertidaksamaan antar nilai atau variabel, sama dengan operator persamaan, operator ini pun juga memiliki strict inequality operator dengan menggunakan (!==).

Contoh penggunaan:

1 != 1; // false
1 !== 1; // false
1 != '1'; // false
1 !== '1'; // true

Operator relasional ( > , <, >=, <= )

Operator ini digunakan untuk membandingkan dua nilai numerik.

Terdiri dari beberapa operator:

Operator | Deskripsi
---------|-----------
> | lebih dari
< | kurang dari
>= | lebih dari atau sama dengan
<= | kurang dari atau sama dengan

Contoh Penggunaan:

1 > 1; // false
1 >= 1; // true
1 < 1; // false
1 <= 1; // true

1 > 2; // false
1 >= 2; // false
1 < 2; // true
1 <= 2; // true

Dalam operator relational, hanya nilai saja yang dibandingkan, tak ada operator strict yang dapat membandingkan nilai dan tipe.

Special Case, Null & Undefined

Membandingkan null dan undefined dengan operator persamaan.

null === undefined; // false
null == undefined; // true

null !== undefined; // true
null != undefined; // false

Terdapat aturan khusus dimana kedua nilai yang bersifat falsy ini jika dibandingkan dengan persamaan non strict equality akan bernilai true, sementara dengan operator strict equality akan bersifat false, karena null dan undefined memiliki tipe yang berbeda.

Membandingkan null dengan nilai 0 menggunakan operator relational.

null > 0; // false
null >= 0; // true
null < 0; // false
null <= 0; // true

Ketika terdapat operator relational, null akan dikonversi kedalam nilai numerik, yaitu 0, berikut adalah code untuk membuktikannya:

null > -1; // true
null >= 0; // true
null <= 0; // true
null < 1; // true

Membandingkan undefined dengan nilai 0 menggunakan operator relational.

undefined > 0; // false
undefined >= 0; // false
undefined < 0; // false
undefined <= 0; // false

Berbeda dengan null, undefined akan dikonversikan kedalam NaN, nilai NaN akan selalu menghasilkan false jika di bandingkan dengan bilangan lain. sehingga akan selalu menghasilkan nilai false seperti kode diatas.

Weird Case 0.1 + 0.2 === 0.3 returns false!

Kasus ini banyak terjadi, cukup aneh memang, penjelasan singkat mengapa kode 0.1 + 0.2 === 0.3 menghasilkan false karena 0.1 + 0.2 tidak akan menghasilkan bilangan 0.3 melainkan bilangan 0.30000000000000004. Ini terjadi karena javascript selalu menyimpan data numerik dengan tipe data double precision float. Penjelasan lengkap dapat di lihat di artikel medium ini.

Okay, sekarang sudah siap untuk bikin kondisi buat branching dan looping nih

Cheers 🥂

Originally published at https://hendrasadewa.site.

--

--

Hendra 'hare' Sadewa
Hendra 'hare' Sadewa

Written by Hendra 'hare' Sadewa

Front-end Developer | FOSS & Web Enthusiast

No responses yet