为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

千巷猫影 2019-06-03 10:13:22
如何解决JavaScript的ParseInt八进制行为?尝试在JavaScript中执行以下命令:parseInt('01'); //equals 1parseInt('02'); //equals 2parseInt('03'); //equals 3parseInt('04'); //equals 4parseInt('05'); //equals 5parseInt('06'); //equals 6parseInt('07'); //equals 7parseInt('08'); //equals 0 !!parseInt('09'); //equals 0 !!我刚学到了JavaScript认为前导零表示八进制整数因为没有"8"或"9"在基-8中,函数返回零。不管你喜不喜欢,这是故意的.解决办法是什么?注意:为了完整起见,我即将发布一个解决方案,但这是一个我讨厌的解决方案,所以请发布其他/更好的答案。最新情况:JavaScript标准的第5版(ECMA-262)引入了消除此行为的破坏更改。莫兹拉笔迹.
查看完整描述

4 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

这是一个常见的Javascript问题,有一个简单的解决方案:

只是指定基,或“基数”,如下所示:

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

你也可以用:

Number('08'); // 8


查看完整回答
反对 回复 2019-06-03
?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

如果你您的值将在带符号的32位整数范围内。~~x在所有情况下都会做正确的事情。

~~"08" === 8~~"foobar" === 0~~(1.99) === 1~~(-1.99)  === -1

如果你查二进制不是(~),该规范要求对参数进行“ToInt 32”转换,该参数执行明显的Int 32转换,并被指定为强制转换。NaN值为零。

是的,这太麻烦了,但太方便了.


查看完整回答
反对 回复 2019-06-03
?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

ParseInt文件,使用可选基参数指定基-10:

parseInt('08', 10); //equals 8
parseInt('09', 10); //equals 9

这给我的印象是学究的,混乱的,冗长的(真的,在每一个ParseInt中都是一个额外的争论吗?)所以我希望有更好的方法。


查看完整回答
反对 回复 2019-06-03
  • 4 回答
  • 0 关注
  • 522 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信