Beberapa hari yang lalu, tapak kad kredit akan menyepadukan ciri baru, tetapi ia benar-benar rumit, semua orang tahu bahawa terdapat tarikh tamat tempoh di belakang kad kredit , maklumat ini mesti dihantar ke bank untuk pemprosesan data, selepas pengguna memasukkan tempoh sah kad kredit melalui suara, sistem akan membuat penghakiman tempoh sah Untuk mengelakkan masalah yang tidak perlu, ia dinilai bahawa masa tamat tempoh mestilah tidak dalam masa satu bulan Memandangkan tahun input, bulan dan hari berada dalam tiga kotak teks, ditambah lagi saya fikir ia menyusahkan untuk menukarnya kepada masa, jadi saya hanya menukar kandungan teks tahun, bulan dan hari ke dalam int. taip untuk menilai. Ini adalah latar belakang.
Setelah berkata begitu banyak, saya akhirnya sampai ke topik artikel Kami tahu bahawa tempoh sah adalah seperti ini: 2015-09-20 Saya mengeluarkan "09" dari kotak teks bulan, dan kemudian saya membuat penukaran berikut di bawah chrome. Saya sangat gembira dan ia selesai.
Sebelah petang, adik yang mengujinya kembali dan mengatakan bahawa terdapat masalah dalam menilai tempoh sah kad kredit saya agak terkejut Tiada masalah. Kemudian saya tidak mempunyai pilihan, saya hanya boleh pergi ke meja adik perempuan itu untuk melihatnya secara peribadi, sapukan sedikit minyak, dan mulakannya. dan kini saya akhirnya menemui masalahnya.
Semasa saya menguji, adik perempuan saya memasang IE8, dan di bawah IE8, parseint akan menganggap "09" saya sebagai perlapanan secara lalai, tetapi mendapati ia bukan perlapanan undang-undang, dan akhirnya membuang nilai palsu 0. Kami juga melihat bahawa dalam Chrome, "09" akan dilihat sebagai perpuluhan secara lalai, jadi enjin js secara semula jadi akan menukarnya kepada 9, yang saya berpuas hati dengannya, IE benar-benar tidak mengikut akal manusia menyelesaikannya Kain bulu?
1: Penyelesaian
<1> Saya juga mendapati dalam perbincangan tadi bahawa parseInt mempunyai pemprosesan tingkah laku lalai yang berbeza dalam penyemak imbas yang berbeza dokumen api javascript saya pergi untuk melihat kotak hitam, dan kemudian saya menemui parameter radix yang mengejutkan saya.
Mengetahui radix ini, masalahnya boleh diselesaikan dengan mudah Sekarang saya hanya perlu menentukan radix=10, seperti yang ditunjukkan dalam gambar:
Walau bagaimanapun, ia kemudiannya mendapati bahawa di bawah IE9, lapisan bawah parseint juga lalai kepada perpuluhan apabila radix tiada Akhirnya, Microsoft membuat pengubahsuaian yang betul untuk memenuhi citarasa orang ramai.
<2> Selain fungsi parseint, sebenarnya terdapat fungsi Nombor yang juga boleh membantu anda menyelesaikan masalah ini, dan tiada masalah pada IE7 dan 8, kerana dalam js, jika anda pergi ke baru dan melihat pada Nombor ini Jika ya, anda boleh menjana objek Nombor Ini agak berbeza daripada C#, jadi saya boleh melihatnya dalam dua cara di bawah.
Kelebihan Nombor ini ialah ia hanya boleh mengendalikan nilai perpuluhan, dan terdapat cara khas lain untuk memainkannya Tidak seperti parseint yang hanya menerima parameter rentetan, nombor boleh menerima apa-apa jenis, seperti:
Memandangkan kami tidak dapat melihat kod sumber asas Nombor, kami hanya boleh mengingati isu ini melalui khabar angin Di sinilah JS berbeza daripada bahasa terurus yang lain.