javascript - parseInt ("010", 10);与 parseInt(010, 10);

标签 javascript

我对 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/

相关文章:

javascript - 如何处理 tree shaking 代码中的副作用?

javascript - 基本 jQuery slider 中上一张/下一张幻灯片的自定义链接触发器

javascript - 使用 jQuery 连续向左滑动动画

javascript - ASP.NET、母版页和 jQuery

javascript - 我可以使用 JavaScript 生成 RSS (XML) 页面吗?

javascript - IE11 中的货币格式

javascript - html2canvas 捕获低质量图片

javascript - 实时更新Javascript计算器答案

javascript - 如何从js调用php方法?

javascript - 将html输入数组转换为JS对象