一尘不染

如何解决JavaScript的parseInt八进制行为?

javascript

尝试在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",所以该函数返回零。

有哪些解决方法?

注意:为了完整起见,我将发布一个解决方案,但这是我讨厌的解决方案,因此请发布其他/更好的答案。


更新:

JavaScript标准的第5版(ECMA-262)引入了一项重大更改,消除了此行为。Mozilla有一个很好的写了。


阅读 301

收藏
2020-04-23

共1个答案

一尘不染

这是一个简单的解决方案,是常见的Javascript陷阱:

只需指定base或“ radix”,如下所示:

parseInt('08',10); // 8

您也可以使用Number:

Number('08'); // 8
2020-04-23