可能重复:
Why can't I access a property of an integer with a single dot?
我正在阅读一篇文章,并遇到了javascript toFixed方法的奇怪行为。我不明白最后一句话的原因。有人可以解释一下吗?
(42).toFixed(2);
//“42.00”好的
42.toFixed(2);
//语法错误:标识符在数字文字后立即开始
42..toFixed(2);
//“42.00”这真的很奇怪
答案 0 :(得分:5)
JavaScript中的数字基本上属于正则表达式:
[+-]?[0-9]*(?:\.[0-9]*)?(?:[eE][+-]?[0-9]+)?
请注意量词是贪婪的。这意味着它看到了:
42.toFixed(2);
它将42.
作为数字读取,然后立即面对toFixed
,并且不知道如何处理它。
对于42..toFixed(2)
,数字为42.
但不是42..
,因为正则表达式只允许一个点。然后它会看到.
,它只能是对成员的调用,即toFixed
。一切正常。
就可读性而言,(42).toFixed(2)
的意图要清楚得多。
答案 1 :(得分:3)
点不明确:小数点或呼叫成员运算符。因此错误。
42..toFixed(2);
相当于(42.).toFixed(2)