为什么我不能用单个点访问整数的属性?

Pet*_*son 14 javascript syntax

如果我试着写

3.toFixed(5)
Run Code Online (Sandbox Code Playgroud)

有一个语法错误.使用双点,放入空格,将三个放在括号中或使用括号表示法可以使其正常工作.

3..toFixed(5)
3 .toFixed(5)
(3).toFixed(5)
3["toFixed"](5)
Run Code Online (Sandbox Code Playgroud)

为什么单点符号不起作用,而我应该使用哪一种替代?

Guf*_*ffa 19

句点是数字的一部分,因此代码将被解释为:

(3.)toFixed(5)
Run Code Online (Sandbox Code Playgroud)

这自然会产生语法错误,因为您无法使用标识符立即跟随该数字.

任何使句点不被解释为数字的一部分的方法都可以.我认为最明确的方法是在括号周围加上括号:

(3).toFixed(5)
Run Code Online (Sandbox Code Playgroud)


Rod*_*olz 11

由于JavaScript的tokenizer存在缺陷,因此无法访问它.Javascript尝试将数字上的点表示法解析为浮点文字,因此您无法使用属性或方法跟踪它:

2.toString(); // raises SyntaxError

正如您所提到的,有几种解决方法可用于使数字文字也充当对象.任何这些都同样有效.

2..toString(); // the second point is correctly recognized
2 .toString(); // note the space left to the dot
(2).toString(); // 2 is evaluated first
Run Code Online (Sandbox Code Playgroud)

要了解对象使用和属性背后的更多信息,请查看Javascript Garden.

  • 大多数答案实际上是重复OP已经说过的事情... (6认同)

rua*_*akh 5

它不起作用,因为 JavaScript 将 the 解释3.为浮点常量的开头(例如3.5)或整个浮点常量(with 3. == 3.0),因此您不能在它后面跟一个标识符(在您的情况下) ,属性名称)。它无法识别您希望 the3和 the.成为两个单独的令牌。

你的任何解决方法对我来说都很好。