首页 > web前端 > js教程 > 为什么 JavaScript 中 `040` 等于 32?

为什么 JavaScript 中 `040` 等于 32?

Mary-Kate Olsen
发布: 2024-11-26 09:01:11
原创
373 人浏览过

Why Does `040` Equal 32 in JavaScript?

JavaScript 中以零开头的数字:破译其中的奥秘

想象一下在 JavaScript 中遇到以下代码:

var num = 040;
console.log(num); // 32
登录后复制

很困惑,你可能想知道 40 为何等于 32。答案在于前导零。

在 JavaScript 的早期版本中,数字文字中的前导零表示八进制(以 8 为基数)数字,类似于十六进制的前导 0x。因此,“040”被解释为 4x8^1 0x8^0 = 32。

然而,这种做法被证明是令人困惑的,并在 ECMAScript 3 中被降级为可选扩展。现代 JavaScript 强制执行严格模式,其中前导零为了保持一致性,禁止使用十进制文字。

ECMAScript 6 引入了使用 0o 和 0b 表示八进制和二进制数的新方法分别是前缀。使用前导零 (010) 的旧八进制格式在严格模式下成为语法错误。

因此,上面的代码现在将在严格模式下返回语法错误。如果希望解析以 8 为基数的数字,可以使用推荐的 0o 前缀或使用 parseInt,如下所示:

parseInt('010', 8); // Returns 8
登录后复制

为了确保正确解析十进制数字,请删除前导零或使用 parseInt。

总之,理解 JavaScript 数字文本中前导零的历史意义对于理解其行为和解释代码至关重要正确。

以上是为什么 JavaScript 中 `040` 等于 32?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板