Peril Oktal JavaScript: Penyelesaian untuk Salah Laku ParseInt
Fungsi parseInt JavaScript boleh tersandung apabila menemui nombor dengan sifar pendahuluan. Isu ini berpunca daripada kecenderungannya untuk mentafsir sifar pendahuluan sebagai digit perlapanan, yang membawa kepada keputusan yang salah.
Contoh:
parseInt('01'); // 1 parseInt('08'); // 0 (invalid octal digit)
Penyelesaian:
Penyelesaian yang paling mudah ialah dengan memberikan asas nombor atau radix secara eksplisit. Ini boleh dilakukan menggunakan parameter kedua parseInt:
parseInt('08', 10); // 8 (specifying base 10)
Sebagai alternatif, Number constructor boleh digunakan untuk menghurai nombor, termasuk nombor yang mendahului sifar:
Number('08'); // 8
Pendekatan lain ialah menukar rentetan kepada asas 10 sebelum menghuraikannya:
parseInt(parseInt('08', 8).toString(), 10); // 8 (convert octal to base 10)
Ungkapan biasa boleh digunakan untuk mengalih keluar sifar pendahuluan:
parseInt(/^0+(.*)$/gm('008')); // 8 (match and capture non-zero digits)
Nota:
Dalam JavaScript Edisi ke-5 (ECMA-262), tingkah laku parseInt telah berubah, menghapuskan isu tafsiran oktal. Walau bagaimanapun, untuk keserasian dengan versi JavaScript yang lebih lama, adalah disyorkan untuk menggunakan salah satu penyelesaian yang dinyatakan di atas apabila menemui nombor dengan sifar pendahuluan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengelak Isu Tafsiran Oktal parseInt dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!