可能重复:
为什么我不能用一个点访问整数的属性?
我正在阅读一篇文章,遇到了 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
并且不知道如何处理它。
在 的情况下42..toFixed(2)
,数字是42.
但不是42..
因为正则表达式只允许一个点。然后它看到.
which 只能是对成员的调用,即toFixed
。一切正常。
就可读性而言,(42).toFixed(2)
它的意图要清楚得多。
点不明确:小数点或调用成员运算符。因此错误。
42..toFixed(2);
相当于(42.).toFixed(2)