为什么可以在整数变量上调用toString()而不是文字数?

cgs*_*gsd 1 javascript

为什么这样有效:

var num = 1;
console.log(num.toString()); // "1"
Run Code Online (Sandbox Code Playgroud)

但这不是吗?

console.log(1.toString()); // SyntaxError: Unexpected token ILLEGAL
Run Code Online (Sandbox Code Playgroud)

Jam*_*ice 6

因为语法要求将.一个数字作为该数字的一部分进行解析,就像例如1.5..如果要将其用作数字文字的成员运算符,则需要消除歧义:

1..toString();  // "1"
1.0.toString(); // "1"
(1).toString(); // "1"
Run Code Online (Sandbox Code Playgroud)

在前两种情况下,第.一种情况被解析为浮点.第二个只能被解析为成员运算符,因为数字文字只能包含一个浮点.

这由规范中的NumericLiteral语法显示.