【问题标题】:javascript number property syntax [duplicate]javascript数字属性语法[重复]
【发布时间】:2012-09-30 19:18:55
【问题描述】:

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

【问题讨论】:

标签: javascript syntax numbers


【解决方案1】:

JavaScript 中的数字在正则表达式中基本上是这样的:

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

请注意,量词是贪婪的。这意味着当它看到:

42.toFixed(2);

它读取42.作为数字然后立即面对toFixed并且不知道如何处理它。

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

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

【讨论】:

    【解决方案2】:

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

    42..toFixed(2); 等价于(42.).toFixed(2)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-06
      • 2019-03-15
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多