javascript编号属性语法

时间:2012-09-30 19:18:56

标签: javascript syntax numbers

  

可能重复:
  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”这真的很奇怪

2 个答案:

答案 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)