重複の可能性:
JavaScript での toString の使用
152..toString(2)
バイナリ文字列「10011000」を正しく作成しますが、
152.toString(2)
例外をスローします
「SyntaxError: 識別子は数値リテラルの直後に始まります」
なんで?後者の構文は実際にはより正確に聞こえますが、前者は非常に奇妙に見えます!
重複の可能性:
JavaScript での toString の使用
152..toString(2)
バイナリ文字列「10011000」を正しく作成しますが、
152.toString(2)
例外をスローします
「SyntaxError: 識別子は数値リテラルの直後に始まります」
なんで?後者の構文は実際にはより正確に聞こえますが、前者は非常に奇妙に見えます!
数字の後のA.
はあいまいに見えるかもしれません。それは10進数ですか、それともオブジェクトメンバー演算子ですか?
ただし、インタープリターはそれが 10 進数であると判断するため、メンバー演算子がありません。
次のように表示されます。
(10.)toString(); // invalid syntax
2 番目の を含めると.
、10 進数の後にメンバー演算子が続きます。
(10.).toString();
@pedants と downvoters
.
キャラクターがあいまいである。配置に応じて、メンバー演算子または小数として理解できます。あいまいさがなければ、質問する必要はありません。
その特定の位置にある文字の仕様の解釈は.
、10 進数になるということです。これは、ECMAScript の数値リテラル構文によって定義されます。
JS インタープリターのあいまいさが仕様によって解決されたからといって、.
文字のあいまいさがまったく存在しないわけではありません。
レクサー(別名「トークン化」)は、新しいトークンを読み取るときに、最初に数字を見つけたときに、有効な数字の一部ではない文字が見つかるまで、文字(つまり、数字または1つのドット)を消費し続けます。
<152.>
は正当なトークンです(末尾の0は必須ではありません)が、必須で<152..>
はないため、最初の例は次の一連のトークンになります。
<152.> <.> <toString> <(> <2> <)>
これは合法的な(そして予想される)シーケンスですが、2番目は次のようになります
<152.> <toString> <(> <2> <)>
toString
これは違法です-番号を通話から分離するピリオドトークンはありません。
10.
float number
toString を使用できる anですfloat
例えば。
parseFloat("10").toString() // "10"