JavaScript 的八進制危險:parseInt 錯誤行為的解決方法
JavaScript 的parseInt 函數在遇到帶有前導零的數字時可能會出錯。該問題源於其將前導零解釋為八進制數字的傾向,從而導致錯誤的結果。
範例:
parseInt('01'); // 1 parseInt('08'); // 0 (invalid octal digit)
解決方法:
最直接的解決方案是明確提供數字的基數或基數。這可以使用parseInt 的第二個參數來完成:
parseInt('08', 10); // 8 (specifying base 10)
或者,Number建構子可用於解析數字,包括帶有前導零:
Number('08'); // 8
另一種方法是在解析之前將字串轉換為基數10:
parseInt(parseInt('08', 8).toString(), 10); // 8 (convert octal to base 10)
正規表示式可用來刪除前導零:
parseInt(/^0 (.*)$/gm('008')); // 8 (match and capture non-zero digits)
注意:
在JavaScript 的第5 版(ECMA-262)中,parseInt 的行為發生了變化,消除了八進位解釋問題。但是,為了與舊版本的 JavaScript 相容,建議在遇到帶有前導零的數字時使用上述解決方法之一。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3