1

重複の可能性:
1 つのドットで整数のプロパティにアクセスできないのはなぜですか?

私は記事を読んでいて、javascript toFixed メソッドの奇妙な動作に出くわしました。最後の発言の理由がわかりません。誰か説明してくれませんか?

(42).toFixed(2);// "42.00" わかりました

42.toFixed(2);// SyntaxError: 識別子は数値リテラルの直後から始まります

42..toFixed(2);// "42.00"これは本当に奇妙に思えます

4

2 に答える 2

5

JavaScript の数値は、基本的に正規表現では次のようになります。

[+-]?[0-9]*(?:\.[0-9]*)?(?:[eE][+-]?[0-9]+)?

量指定子が貪欲であることに注意してください。これは、次の場合を意味します。

42.toFixed(2);

それは数字として を読み取り、42.すぐに直面しtoFixed、それをどうするかわかりません。

の場合、正規表現では 1 つのドットしか許可されないため42..toFixed(2)、数字は ではありません。次に、メンバーへの呼び出しのみである を確認します。これはです。すべて正常に動作します。42.42...toFixed

読みやすさに関する限り、(42).toFixed(2)その意図ははるかに明確です。

于 2012-09-30T19:30:47.770 に答える
3

ドットがあいまいです: 小数点またはメンバー演算子を呼び出します。したがって、エラー。

42..toFixed(2);と同等です(42.).toFixed(2)

于 2012-09-30T19:22:18.293 に答える