尝试在JavaScript中执行以下操作:
parseInt('01'); //equals 1
parseInt('02'); //equals 2
parseInt('03'); //equals 3
parseInt('04'); //equals 4
parseInt('05'); //equals 5
parseInt('06'); //equals 6
parseInt('07'); //equals 7
parseInt('08'); //equals 0 !!
parseInt('09'); //equals 0 !!
我刚刚了解到JavaScript认为前导零表示八进制整数的困难方式,并且由于在基数8中没有"8"
或"9"
,所以该函数返回零。是否喜欢,这是设计使然。
有哪些解决方法?
注意:为了完整起见,我将发布一个解决方案,但这是我讨厌的解决方案,因此请发布其他/更好的答案。
更新:
10
)中,除非要解析的数字以开头,否则基本参数默认为(十进制)0x
,例如0xFF
,在这种情况下,基本参数默认为16。将是遥远的记忆。
+'08' === 8
?真正!也许您确实需要parseInt
真正的代码,但上面并不需要。
Number('08')
0
或undefined
并且字符串的数字以0
不以x
或开头的数字开头X
,则实现可以自行决定将数字解释为八进制还是十进制。在这种情况下,建议实现将数字解释为十进制。 ”(我的重点)