2015-01-21 43 views
0

我是一個編寫簡單的HTML/Javascript程序的業餘程序員,最近我遇到了一些我無法解釋的東西。我有一個小程序來設定預約的開始和結束時間。這兩種格式都是HHMMSS。我對我需要的開始時間進行硬編碼,例如103000或123000,然後編寫一行代碼以添加10000以獲得結束時間。這工作得很好,直到我嘗試了073000 + 10000.結果,而不是083000(或至少83000),結果是40208.Javascript數學錯誤與前導零

我會寫問題作爲領先0的問題,但093000 + 10000 = 103000,這是我所期望的。 073000 + 10000 = 40208是怎麼回事?

我以不同的方式修復了這個程序,但是我被這個難住了。非常感謝您提供的任何解釋。

這裏是W3Schools的一些簡單的代碼產生40208作爲其相加結果:

<!DOCTYPE html> 
<html> 
<body> 

<button onclick="myFunction()">Try it</button> 

<p id="demo"></p> 

<script> 
function myFunction() { 
    var x = 073000 + 10000; 
    document.getElementById("demo").innerHTML = x; 
} 
</script> 

</body> 
</html> 
+0

確保'「使用嚴格的」'。因爲否則'073000 = 30208' – elclanrs 2015-01-21 02:57:30

+0

elclanrs,你可以擴大你的評論到一個答案和海報知道爲什麼會發生。我不知道或我自己的評論。 – 2015-01-21 02:59:39

+0

@SteveMitcham,感覺自由,感覺懶惰在這裏,並沒有找到常見的dups。 – elclanrs 2015-01-21 03:02:42

回答

3

號碼與一家領先的0都以同樣的方式數字八進制數與領先0x是十六進制數字:

01 = 1 
02 = 2 
... 
07 = 7 
010 = 8 
011 = 9 

通常,09會導致語法錯誤,因爲9不是八進制數字(與e不是十進制數字的方式相同)。但顯然現在大多數瀏覽器都會自動將它檢測爲十進制,而不是產生錯誤。


注意:在使用八進制語法嚴格模式(啓動一批具有領先0原因語法錯誤,因爲八進制語法不是ECMAScript標準的一部分

+0

感謝您的信息。我沒有我dea是什麼問題。 – Matt 2015-01-24 03:49:12