尝试在 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"
or"9"
在 base-8 中,该函数返回零。不管你喜不喜欢,这是设计使然。
有哪些解决方法?
注意:为了完整起见,我即将发布解决方案,但这是我讨厌的解决方案,因此请发布其他/更好的答案。
更新:
JavaScript 标准的第 5 版 ( ECMA-262 ) 引入了消除此行为的重大更改。Mozilla 有一篇很好的文章。