web-dev-qa-db-ja.com

00.0で構文エラーが発生するのはなぜですか?

これは変です。これは、JavaScriptコンソールでChrome(バージョン42.0.2311.135、64ビット)で発生することです。

> 0
< 0
> 00
< 0
> 0.0
< 0
> 00.0
X Uncaught > SyntaxError: Unexpected number

Firefox 37.0.2も同じですが、エラーメッセージは次のとおりです。

SyntaxError: missing ; before statement

JavaScriptが数値を解析する方法については、おそらく技術的な説明があります。おそらく、コンソールプロンプトをいじくり回したときにのみ発生する可能性がありますが、それでも間違っているようです。

なぜそれをするのですか?

71
Chris Dennis

0.000.0は異なる方法で解析されます。

  • 0.0は数値リテラルとして解析されます 1
  • 00.0は次のように解析されます:
    • 00 –8進数のリテラル 2
    • . –プロパティアクセサー
    • 0 –識別子名

0は有効なJavaScript識別子ではないため、コードは構文エラーをスローします。 toStringは有効な識別子であるため、次の例は機能します。

00.toString

1セクション7.8. –先頭の0の後に小数点またはExponentPart
2セクションB.1.1 –先頭の0の後にOctalDigitsを続けることができます

77
Salman A

00は8進数として評価され、.0は、その番号のプロパティにアクセスしていると評価されます。ただし、整数をプロパティアクセサーとして使用することは許可されていないため、エラーがスローされます。

他のオブジェクトでも同じエラーが発生します。

'string'.0 // Syntax error: unexpected number
({}).0 // Syntax error: unexpected number

プロパティアクセサーに関する関連情報は [〜#〜] mdn [〜#〜] にあります。

22
Robert Rossmann