Dalam Javascript, anda mungkin menemui kod yang membandingkan rentetan yang datang daripada medan teks HTML dengan integer, seperti ini:
x >= 1 && x <= 999;
Syarat ini menyemak sama ada nilai x daripada medan teks jatuh antara 1 dan 999 (termasuk), dan ia mengejutkan berfungsi seperti yang diharapkan. Walau bagaimanapun, x ialah rentetan, manakala keadaan melibatkan integer. Bukankah ini sepatutnya membawa kepada ralat?
Jawapan: Paksaan Operator
Javascript mentakrifkan operator seperti >= dan <= untuk membenarkan paksaan antara jenis data yang berbeza . Begini cara ia berfungsi:
Implikasi
Tingkah laku paksaan ini boleh membawa kepada hasil yang tidak dijangka, seperti:
"90" > "100" kerana rentetan dibandingkan. Perlukah Anda Menggunakan parseInt()? Sama ada hendak menggunakan parseInt() untuk menukar x kepada integer sebelum perbandingan ialah perkara keutamaan. Ada yang lebih suka bergantung pada paksaan tersirat, manakala yang lain lebih suka penukaran eksplisit untuk kejelasan dan ketekalan. Pilihan Penukaran Jika anda memilih penukaran eksplisit, anda mempunyai pelbagai pilihan selain parseInt (): Pertimbangkan implikasi dan pilih pilihan yang paling sesuai dengan kod anda keperluan. Atas ialah kandungan terperinci Mengapa Perbandingan Rentetan-ke-Nombor Berfungsi dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
"90" < 100 kerana nombor dibandingkan.