Operator Relasional ECMAScript

Operator hubungan melaksanakan operasi perbandingan. Setiap operator hubungan mengembalikan nilai Boolean.

Cara perbandingan biasa

Operator hubungan kurang, lebih besar, kurang dari sama dengan, dan lebih besar dari sama dengan melaksanakan operasi perbandingan dua angka, cara perbandingannya sama dengan operasi perbandingan aritmatika.

Setiap operator hubungan mengembalikan nilai Boolean:

var bResult1 = 2 > 1	//true
var bResult2 = 2 < 1	//false

Namun, penggunaan operator hubungan untuk dua string berbeda. Banyak orang menganggap kurang berarti "di depan abjad", lebih besar berarti "di belakang abjad", namun hal ini bukan seperti itu. Untuk string, setiap karakter dalam string pertama dibandingkan dengan kode karakter karakter yang sama di posisi yang sama string kedua. Setelah operasi perbandingan ini selesai, kembalikan nilai Boolean. Masalahnya adalah kode huruf besar selalu lebih kecil daripada kode huruf kecil, yang berarti mungkin muncul seperti ini:

var bResult = "Blue" < "alpha";
alert(bResult);	//keluar true

Dalam contoh di atas, string "Blue" lebih kecil daripada "alpha", karena kode karakter B adalah 66, kode karakter a adalah 97. Untuk mendapatkan hasil perbandingan abjad yang sebenarnya, perlu mengubah kedua angka ke bentuk huruf yang sama (besar atau kecil) dan lakukan perbandingan:

var bResult = "Blue".toLowerCase() < "alpha".toLowerCase();
alert(bResult); // Output false

Mengubah kedua operands menjadi huruf kecil, memastikan untuk mengidentifikasi dengan benar bahwa "alpha" berada di depan urutan abjad daripada "Blue".

Membandingkan Angka dan String

Situasi yang sulit lainnya terjadi saat membandingkan dua string yang berupa angka, seperti:

var bResult = "25" < "3";
alert(bResult); // Output "true"

Kode di atas membandingkan string "25" dan "3". Kedua operands adalah string, jadi dibandingkan kode karakter (kode karakter "2" adalah 50, kode karakter "3" adalah 51).

Tetapi, jika salah satu operands diubah menjadi angka, hasilnya menarik:

var bResult = "25" < 3;
alert(bResult); // Output "false"

Disini, string "25" akan diubah menjadi angka 25, lalu dibandingkan dengan angka 3, hasilnya seperti yang diharapkan.

Pada setiap saat membandingkan angka dan string, ECMAScript akan mengubah string menjadi angka, lalu membandingkan menurut urutan angka.

Tetapi, bagaimana jika string tidak dapat diubah menjadi angka? Diperhatikan contoh berikut:

var bResult = "a" < 3;
alert(bResult);

Apakah Anda dapat memperkirakan apa yang akan keluar kode ini? Huruf "a" tidak dapat diubah menjadi angka yang memiliki makna. Namun, jika menggunakannya metode parseInt(), kembalian adalah NaN. Menurut aturan, setiap operator relasional yang mengandung NaN harus kembali false, jadi kode ini juga mengeluarkan false:

var bResult = "a" >= 3;
alert(bResult);

Biasanya, jika nilai kedua operasi kurang dari operasi kembali false, maka operasi lebih besar atau sama dengan harus kembali true, tetapi jika suatu angka adalah NaN, situasi itu bukan seperti itu.