2010-12-19 51 views
5

我在正整數之前有一些零。我想刪除零,所以只剩下正整數。像'001'只會是'1'。我認爲最簡單的方法是使用parseInt('001')。但是我發現它不適用於數字8和9.示例parseInt('008')將導致「0」而不是「8」。JavaScript函數parseInt()不能正確解析前導0的數字

這裏是整個的html代碼:

<html> <body> 
<script> 
var integer = parseInt('002'); 
document.write(integer); 

</script> 
</body> </html> 

但我可以採用某種報告這個問題?有誰知道另一個簡單的解決方法這個問題?

+0

另外,通過使用'parseInt('008').toString()'去除前導零非常笨拙,可以考慮使用'RegExp'而不是 – 2010-12-19 04:44:31

回答

10

這是記錄的行爲:好像他們是八http://www.w3schools.com/jsref/jsref_parseInt.asp

字符串與一家領先的「0」被解析。

+2

MDN文檔的質量通常比他們的w3schools更高。 [這裏是](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/parseInt)相關的MDN頁面。 – 2012-12-14 19:19:00

+1

相關:http://w3fools.com/ – 2013-02-16 16:05:21

+0

[FireFox 21](https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/21)好奇地決定[刪除此功能] (https://bugzilla.mozilla.org/show_bug.cgi?id=786135)。 Chrome顯然已經有一段時間了:http://stackoverflow.com/questions/14542377 – 2013-05-15 00:15:03

3

前綴爲零的數字被解析爲八進制數。

+2

這不是[整個故事](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/ Global_Objects/parseInt) - 它是瀏覽器和版本相關的。 – 2012-12-14 19:20:14

15

您必須指定的數量(基數)的基礎

parseInt('01', 10); 
+5

是的,和一個JS代碼質量的工具,如JSLint(http://www.jslint.com/)可以給你一個關於它:) – 2010-12-19 04:13:21

1

這實際上不是一個錯誤。由於傳統原因,以0開頭的字符串被解釋爲八進制,並且八進制中沒有數字8.爲解決此問題,您應明確傳遞一個基數(即parseInt("008", 10))。