【发布时间】:2011-12-09 15:15:09
【问题描述】:
假设你有以下 JavaScript sn-p:
<script>
var x = 013;
console.log(x);
</script>
为什么 Firebug 会打印 11?
【问题讨论】:
-
它是否将其解释为八进制?
-
前导0表示在Octal中。
标签: javascript integer
假设你有以下 JavaScript sn-p:
<script>
var x = 013;
console.log(x);
</script>
为什么 Firebug 会打印 11?
【问题讨论】:
标签: javascript integer
JavaScript 支持与 C 和 Java(等)相同的数字常量约定,因此前导零使其成为八进制常量。 (以 8 为底的“13”是 8 + 3,即 11。)
【讨论】:
它的八进制值。所以它 1*8^1 + 3*8^0=11
【讨论】:
因为您指定了一个八进制数,但它显示的是十进制表示。
【讨论】:
它将它解释为八进制。任何以零开头的数字都被解释为八进制(以 8 为基数)字面量,并且八进制 13 = 8*1+3 = 十进制。
还有,好标题。
【讨论】:
013 是一个 八进制 常量 - 它以 8 为基数解释。1·8 + 3·1 = 8 + 3 = 11
【讨论】:
它被解释为以 8 为底。以 8 为底的 013 是十进制的 11。
在 javascript 中,以 0dd 或 -0dd 开头且不是 0xdd 或 -0xdd 的常数被解释为八进制(以 8 为基数)。
您可以在第 231 页的ECMAScript specification 中看到它的描述。
【讨论】: