2011-10-17 19 views
0

可能重複:
Leading zero in javascript認識數字基地

鑑於你有以下的JavaScript代碼段:

<script> 
    var x = 013; 
    console.log(x); 
</script> 

爲什麼說螢火蟲會打印11

+0

它解釋爲八進制? – dbeer

+4

閱讀:https://developer.mozilla.org/en/JavaScript/Guide/Values%2c_Variables%2c_and_Literals#Integers –

+0

前導0意味着它在[Octal]中(http://en.wikipedia.org/wiki/Octal )。 – birryree

回答

4

JavaScript支持與C和Java(等)一樣的數字常量約定,所以前導零使得八進制常量。 (基數8中的「13」是8 + 3或11.)

+0

另外,波蒂永遠是對的。 – karim79

+0

@ karim79:這是不言而喻的。波蒂是一個搖滾明星! – user113716

+0

嘖嘖嘖嘖你們。我太老了,不能成爲搖滾明星:-) – Pointy

3

其八進制值。所以1 * 8^1 + 3 * 8^0 = 11

1

它解釋爲八進制。任何從零開始的數字都被解釋爲八進制(基數8)文字,而八進制數13 = 8 * 1 + 3 = 11十進制數。

此外,好標題。

2

因爲您已經指定了一個八進制數,但它顯示了它的十進制表示。

1

它被解釋爲基數8.並且基數8中的013是十進制的11。

在JavaScript中,以0dd或-0dd開頭並且不是0xdd或-0xdd的常數被解釋爲八進制(基數8)。

你可以看到它在ECMAScript specification頁描述231.

1

013是一個八進制恆定 - 它在底座8 1解釋·8 + 3·1 = 8 + 3 = 11