理解 javascript 中的数基
可能的重复:
javascript 中的前导零
假设您有以下 JavaScript 代码段:
<script>
var x = 013;
console.log(x);
</script>
为什么 Firebug 会打印 11 ?
Possible Duplicate:
Leading zero in javascript
Given you have the following JavaScript snippet:
<script>
var x = 013;
console.log(x);
</script>
Why is it that Firebug prints 11
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
JavaScript 支持与 C 和 Java(等)相同的数字常量约定,因此前导零使其成为八进制常量。 (8 进制的“13”是 8 + 3,即 11。)
JavaScript supports the same convention for numeric constants as C and Java (et al), so the leading zero makes that an octal constant. ("13" in base 8 is 8 + 3, or 11.)
它的八进制值。所以它 1*8^1 + 3*8^0=11
Its octal value. So it 1*8^1 + 3*8^0=11
因为您指定了八进制数,但它显示了其十进制表示形式。
Because you've specified an octal number, but it displays its decimal representation.
它将其解释为八进制。任何以零开头的数字都被解释为八进制(以 8 为基数)文字,而八进制 13 = 8*1+3 = 十进制 11。
另外,标题好。
It's interpreting it as octal. Any number that begins in zero is interpreted as an octal (base 8) literal, and octal 13 = 8*1+3 = 11 decimal.
Also, good title.
013
是一个八进制常量 - 它以基数 8 进行解释。1·8 + 3·1 = 8 + 3 = 11013
is an octal constant - it's interpreted in base 8. 1·8 + 3·1 = 8 + 3 = 11它被解释为基数 8。基数 8 中的 013 是十进制 11。
在 javascript 中,以 0dd 或 -0dd 开头且不是 0xdd 或 -0xdd 的常量被解释为八进制(基数 8)。
您可以在 ECMAScript 规范(第 231 页)。
It is being interpreted as base 8. And 013 in base 8 is 11 decimal.
In javascript, constant numbers that begin with 0dd or -0dd and are not 0xdd or -0xdd are interpreted as octal (base 8).
You can see it described in the ECMAScript specification on page 231.