鑑於你有以下的JavaScript代碼段:
<script>
var x = 013;
console.log(x);
</script>
爲什麼說螢火蟲會打印11
?
鑑於你有以下的JavaScript代碼段:
<script>
var x = 013;
console.log(x);
</script>
爲什麼說螢火蟲會打印11
?
JavaScript支持與C和Java(等)一樣的數字常量約定,所以前導零使得八進制常量。 (基數8中的「13」是8 + 3或11.)
另外,波蒂永遠是對的。 – karim79
@ karim79:這是不言而喻的。波蒂是一個搖滾明星! – user113716
嘖嘖嘖嘖你們。我太老了,不能成爲搖滾明星:-) – Pointy
其八進制值。所以1 * 8^1 + 3 * 8^0 = 11
它解釋爲八進制。任何從零開始的數字都被解釋爲八進制(基數8)文字,而八進制數13 = 8 * 1 + 3 = 11十進制數。
此外,好標題。
因爲您已經指定了一個八進制數,但它顯示了它的十進制表示。
它被解釋爲基數8.並且基數8中的013是十進制的11。
在JavaScript中,以0dd或-0dd開頭並且不是0xdd或-0xdd的常數被解釋爲八進制(基數8)。
你可以看到它在ECMAScript specification頁描述231.
013
是一個八進制恆定 - 它在底座8 1解釋·8 + 3·1 = 8 + 3 = 11
它解釋爲八進制? – dbeer
閱讀:https://developer.mozilla.org/en/JavaScript/Guide/Values%2c_Variables%2c_and_Literals#Integers –
前導0意味着它在[Octal]中(http://en.wikipedia.org/wiki/Octal )。 – birryree