2017-12-30 10 views

答えて

2

小数点以下のリテラルは、で始まり、0で始まります。 the specから、NumericLiteralDecimalLiteralBinaryIntegerLiteralOctalIntegerLiteral、またはHexIntegerLiteralです。あなたは.が含まれているため、DecimalLiteralです。これは先行ゼロを1つだけ持つことができます。

DecimalLiteral::

     DecimalIntegerLiteral . DecimalDigitsopt ExponentPartopt
     . DecimalDigitsopt ExponentPartopt
     DecimalIntegerLiteral ExponentPartopt

...

DecimalIntegerLiteral::

     0
     NonZeroDigit DecimalDigitsopt

と:

NumericLiteral::

     DecimalLiteral
     BinaryIntegerLiteral
     OctalIntegerLiteral
     HexIntegerLiteral

ユアーズがあるので.DecimalLiteral、次のとおりです。ここで

は、リンクされたルールです

DecimalDigits::

     DecimalDigit
     DecimalDigits DecimalDigit

DecimalDigit:: one of

     0 1 2 3 4 5 6 7 8 9

+1

私は興味があります...なぜJSはOPのケースでこの特定のエラーをスローするのか?私は、JSが閉じ括弧が欠けていると思う理由について興味があります。 – AndroidNoobie

+1

私の理解では、パーサーは構文によって混乱し、基本的に残りの文字列(閉じ括弧を含む)を使います。そして、それは、それがエラーを引き起こす引数定義の終わりを探すことから決して外に出ないことを意味します。 – raina77ow

+1

@AndroidNoobie: '00'の後ろに括弧がありません。 '00'は整数リテラルとして解釈され、' .'メソッド呼び出し構文であるが、 '1'(正当なメソッド名ではない)を見る。それは最終的に近くのパンダを期待していたので、コードが "1"を呼び出そうとしたときにコードが軌道から外れてしまったとき、 "あなたはおそらく' 00の後に父親を見逃したでしょう。同様のエラー( 'SyntaxError:missing; beforeステートメント')が '00.1;'(あるいは古いオブジェクトの場合は 'foo.1;')でも同様の理由で取得できます。 – ShadowRanger

関連する問題