Operator relasi ECMAScript

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

Cara perbandingan biasa

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

Setiap operator hubungan mengembalikan nilai Boolean:

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

walau bagaimanapun, penggunaan operator hubungan untuk dua string adalah berbeza. Banyak orang menganggap kurang adalah "lebih depan dalam abjad", lebih besar adalah "lebih belakang dalam abjad", tetapi hal ini bukan seperti itu. Untuk string, setiap kod huruf pertama string dihubungkan dengan kod huruf yang sama di kedua string untuk operasi perbandingan. Setelah operasi perbandingan ini selesai, kembalikan nilai Boolean. Masalahnya, kod huruf besar adalah lebih kecil daripada kod huruf kecil, yang berarti mungkin terjadi seperti berikut:

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

Dalam contoh di atas, string "Blue" lebih kecil daripada "alpha", kerana kod huruf B adalah 66, dan kod huruf a adalah 97. Untuk mendapatkan hasil perbandingan abjad yang sebenar, keduanya mesti diubah ke bentuk huruf yang sama (besar atau kecil) sebelum di bandingkan:

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

Mengubah kedua operand kepada huruf kecil, memastikan pengenalan betul "alpha" berada di sebelum "Blue" di urutan abjad.

Membandingkan Nombor dan String

Satu situasi yang sukar lain berlaku semasa membandingkan nombor yang berbentuk string, seperti:

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

Kode di atas membandingkan string "25" dan "3". Kedua operand adalah string, jadi di bandingkan kod karakter (kod karakter "2" adalah 50, kod karakter "3" adalah 51).

Walau bagaimanapun, jika salah satu operand diubah suai ke nombor, hasilnya menarik:

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

Di sini, string "25" akan diubah suai kepada nombor 25, lalu di bandingkan dengan nombor 3, hasilnya seperti yang diharapkan.

Setiap kali membandingkan nombor dan string, ECMAScript akan mengubah string kepada nombor, lalu membandingkan mereka menurut urutan nombor.

Bagaimanapun, jika string tidak dapat diubah suai ke nombor, bagaimana caranya? Pembanding di bawah ini:

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

Apakah anda dapat meramalkan output kode ini? Abjad "a" tidak dapat diubah suai ke nombor yang mempunyai makna. Walau bagaimanapun, jika digunakan method parseInt(), kembaliannya adalah NaN. Menurut peraturan, setiap penggunaan operator hubungan yang mengandungi NaN mesti kembali false, jadi kode ini juga mengeluarkan false:

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

Biasanya, jika kedua nilai di dalam pengiraan kurang daripada kembali false, maka pengiraan lebih besar sama dengan kenaikan mesti kembali true, walau bagaimanapun jika nombor tertentu adalah NaN, keadaan itu bukan seperti itu.