"10" dalam Javascript? " /> "10" dalam Javascript? " />
Javascript String/Integer Comparison Quandary: Mengapa "2" > "10"?
Pengaturcaraan Javascript mempunyai kelainan yang unik dengan perbandingan rentetan dan integer. Walaupun seseorang mungkin menganggap bahawa rentetan berangka dianggap sebagai integer, ini tidak selalu berlaku, yang membawa kepada hasil yang tidak dijangka.
Pertimbangkan kod yang membingungkan berikut:
console.log("2" > "10");
Mengejutkan ramai orang , kod ini dinilai kepada benar. Mengapakah "2" lebih besar daripada "10"?
Isu asas terletak pada perlakuan semula jadi Javascript terhadap rentetan dan integer Apabila membandingkan dua rentetan, Javascript melakukan perbandingan leksikografik titik kod Unicode mereka Dalam kes ini, titik kod ASCII untuk "2" (50) adalah kurang daripada titik kod untuk "10" (56), menyebabkan "2" dianggap "kurang daripada" "10" dalam perbandingan rentetan.
Untuk menyelesaikan dilema ini dan membandingkan nilai berangka dengan tepat sebagai integer, adalah penting untuk menghuraikan rentetan secara manual menjadi integer Ini boleh dicapai menggunakan fungsi parseInt, yang mengambil rentetan dan radix asas sebagai argumen.
Sebagai contoh, untuk menukar rentetan "2" kepada integer dan melakukan perbandingan bermakna dengan "10":
alert(parseInt("2", 10) > parseInt("10", 10));
Kod ini dinilai dengan betul kepada palsu, sebagai " 2" sememangnya kurang daripada "10" apabila kedua-duanya dianggap sebagai integer.
Dengan menggunakan penghuraian rentetan yang teliti, seseorang boleh mengelakkan perangkap kelakuan perbandingan rentetan/integer yang mengelirukan Javascript dan memastikan perbandingan berangka yang boleh dipercayai.
Atas ialah kandungan terperinci Mengapa Adakah '2' > '10' dalam Javascript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!