我对 parseInt
的特定结果感到困惑。我以为我了解它的大部分怪癖,但这一个还不清楚。
parseInt("010", 10); // 10
parseInt(010, 10); // 8, but expecting 10
在第二个示例中,我指定了正确的基数。出现意外结果的原因是什么?
解决方案
问题出在八进制文字上。当一个数字前面加上 0 时,它被视为八进制文字。
如果你执行
console(010); // 8
在非脚本模式下,你会得到 8。parseInt 之所以有我认为奇怪的行为是因为我实际上是在执行
parseInt(8, 10); // 8
并期待 10。
ParseInt 从未见过 010,只有 8。感谢大家的帮助。
最佳答案
以零开头的数字文字在 octal 中, 而不是 decimal ,所以 010
等于 8
,除非在 strict mode 下运行.
请务必注意,parseInt
的行为会根据您的浏览器使用的 ECMAScript (JavaScript) 版本或您是否运行严格模式而有所不同。参见 Octal Interpretations with No Radix了解更多详情。
关于javascript - parseInt ("010", 10);与 parseInt(010, 10);,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20026978/