私は記事を読んでいて、javascript toFixed メソッドの奇妙な動作に出くわしました。最後の発言の理由がわかりません。誰か説明してくれませんか?
(42).toFixed(2);
// "42.00" わかりました
42.toFixed(2);
// SyntaxError: 識別子は数値リテラルの直後から始まります
42..toFixed(2);
// "42.00"これは本当に奇妙に思えます
私は記事を読んでいて、javascript toFixed メソッドの奇妙な動作に出くわしました。最後の発言の理由がわかりません。誰か説明してくれませんか?
(42).toFixed(2);
// "42.00" わかりました
42.toFixed(2);
// SyntaxError: 識別子は数値リテラルの直後から始まります
42..toFixed(2);
// "42.00"これは本当に奇妙に思えます
JavaScript の数値は、基本的に正規表現では次のようになります。
[+-]?[0-9]*(?:\.[0-9]*)?(?:[eE][+-]?[0-9]+)?
量指定子が貪欲であることに注意してください。これは、次の場合を意味します。
42.toFixed(2);
それは数字として を読み取り、42.
すぐに直面しtoFixed
、それをどうするかわかりません。
の場合、正規表現では 1 つのドットしか許可されないため42..toFixed(2)
、数字は ではありません。次に、メンバーへの呼び出しのみである を確認します。これはです。すべて正常に動作します。42.
42..
.
toFixed
読みやすさに関する限り、(42).toFixed(2)
その意図ははるかに明確です。
ドットがあいまいです: 小数点またはメンバー演算子を呼び出します。したがって、エラー。
42..toFixed(2);
と同等です(42.).toFixed(2)