parseInt("08")返回0

Cur*_*urt 15 javascript parsing integer

可能重复:
JavaScript parseInt八进制错误的变通方法

我一直在研究javascript函数,通过声明年,月和日来设置日期对象.但是,当月份的值为08或时09,0将在使用时返回parseInt().见下文:

parseInt("01") //returns 1
parseInt("02") //returns 2
parseInt("03") //returns 3
parseInt("04") //returns 4
parseInt("05") //returns 5
parseInt("06") //returns 6
parseInt("07") //returns 7
parseInt("08") //returns 0?
parseInt("09") //returns 0?
parseInt("10") //returns 10
Run Code Online (Sandbox Code Playgroud)

我创建了一个jsFiddle来演示这个问题:

http://jsfiddle.net/GhkEf/

为什么parseInt("08")parseInt("09")回报0

zer*_*kms 42

这是因为从0开始的数字被认为是八进制.并且08是八进制的错误数字.

parseInt('09', 10);改用.

  • 这只发生在IE8上. (2认同)

Som*_*Guy 5

它被解析为八进制数。使用中的radix参数parseInt

parseInt('08', 10);

更新:由于ES5的,浏览器应该不会有这样的错误。八进制文字需要采用0o12被视为八进制数的形式。08默认情况下,在 ES5 中现在被认为是十进制数,但是,所有浏览器可能还不支持它,因此您应该继续将radix参数传递给parseInt