Mengapa String to Number Comparison Berfungsi dalam Javascript
Pengendali perbandingan JavaScript, seperti >= dan <=, membenarkan paksaan terhadap operan mereka kepada jenis yang berbeza. Ini termasuk perbandingan rentetan dan integer, seperti yang dilihat dalam coretan kod yang diberikan.
Spesifikasi Javascript mentakrifkan gelagat pengendali perbandingan dalam §11.8.5. Ia menyatakan bahawa jika kedua-dua operan adalah rentetan, ia melakukan perbandingan rentetan. Jika hanya satu operan ialah rentetan, ia dipaksa kepada nombor sebelum perbandingan berangka.
Perbezaan antara rentetan dan perbandingan berangka boleh membawa kepada hasil yang tidak dijangka. Contohnya, "90" > "100" adalah benar kerana rentetan dibandingkan secara leksikografi. Walau bagaimanapun, "90" < 100 adalah benar kerana satu operan dipaksa kepada nombor.
Walaupun Javascript membenarkan paksaan tersirat, sesetengah lebih suka menukar rentetan kepada nombor secara eksplisit sebelum perbandingan. Ini boleh dicapai menggunakan parseInt(), parseFloat(), operator tambah unari ( ), Number(), atau bitwise ATAU dengan sifar (str|0).
Setiap kaedah penukaran mempunyai ciri tersendiri. parseInt() mengabaikan aksara melebihi aksara bukan angka yang pertama, parseFloat() mengabaikan semua aksara bukan perpuluhan, manakala unary plus mempertimbangkan keseluruhan rentetan. Bitwise ATAU dengan paksaan sifar kepada integer 32-bit dan menukarkan NaN kepada 0.
Pilihan kaedah penukaran bergantung pada keperluan khusus. Jika mengabaikan aksara tambahan boleh diterima, parseInt() atau parseFloat() boleh digunakan. Untuk kes di mana keseluruhan rentetan perlu dipertimbangkan, tambah unari adalah disyorkan.
Sebagai garis panduan umum, adalah dianggap amalan yang baik untuk menukar rentetan kepada nombor secara eksplisit untuk kejelasan dan ketekalan.
Atas ialah kandungan terperinci Bagaimanakah JavaScript Mengendalikan Perbandingan Rentetan dengan Nombor?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!