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并且不知道如何处理它。

在 的情况下42..toFixed(2),数字是42.但不是42..因为正则表达式只允许一个点。然后它看到.which 只能是对成员的调用,即toFixed。一切正常。

就可读性而言,(42).toFixed(2)它的意图要清楚得多。

于 2012-09-30T19:30:47.770 回答
3

点不明确:小数点或调用成员运算符。因此错误。

42..toFixed(2);相当于(42.).toFixed(2)

于 2012-09-30T19:22:18.293 回答