2014-03-03 43 views
1

我有parseInt函數。parseInt在IE和Chrome中行爲不同

爲010作爲輸入:在IE

輸出:在鉻8 輸出和Firefox:10

爲099作爲輸入:在IE

輸出:0 輸出在鉻和Firefox :99

有人可以幫我理解瀏覽器中的這種不同的行爲.. 問題是在IE瀏覽器,它在Chrome和Firefox中按預期工作。

在此先感謝。

+0

當你問這個問題時,沒有任何建議會彈出來嗎? http://stackoverflow.com/search?q=parseint+leading+0 – mplungjan

回答

3

其實我會爭論IE瀏覽器正在做的事 *這裏。 parseInt對於以0開頭的字符串,將被視爲八進制輸入。

要解決此問題,指定基(在這種情況下,你想十進制 - 10):

num = parseInt(str, 10); 

*在這種情況下, 「正確」 的真正含義 「傳統」。規範已經發生了變化。 Technically, a string starting with 0 can be treated as either octal OR decimal, depending on the implementor's whim, where decimal is now preferred

如果基數是undefined或0(或不存在),JavaScript的假定:

  • 如果輸入string以 「0」 開始,基數是8(八進制)或10(十進制)。究竟選擇哪個基數是依賴於實現的。 ECMAScript 5指定使用10(十進制),但並非所有瀏覽器都支持此功能。由於這個原因,當使用parseInt時,總是指定一個基數。
+0

謝謝,它的工作正常。 – user3373868

相關問題