我有parseInt函數。parseInt在IE和Chrome中行爲不同
爲010作爲輸入:在IE
輸出:在鉻8 輸出和Firefox:10
爲099作爲輸入:在IE
輸出:0 輸出在鉻和Firefox :99
有人可以幫我理解瀏覽器中的這種不同的行爲.. 問題是在IE瀏覽器,它在Chrome和Firefox中按預期工作。
在此先感謝。
我有parseInt函數。parseInt在IE和Chrome中行爲不同
爲010作爲輸入:在IE
輸出:在鉻8 輸出和Firefox:10
爲099作爲輸入:在IE
輸出:0 輸出在鉻和Firefox :99
有人可以幫我理解瀏覽器中的這種不同的行爲.. 問題是在IE瀏覽器,它在Chrome和Firefox中按預期工作。
在此先感謝。
其實我會爭論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時,總是指定一個基數。
謝謝,它的工作正常。 – user3373868
當你問這個問題時,沒有任何建議會彈出來嗎? http://stackoverflow.com/search?q=parseint+leading+0 – mplungjan