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

时间:2015-03-27 12:52:44

标签: javascript

为什么会这样:

var num = 1;
console.log(num.toString()); // "1"

但这不是吗?

console.log(1.toString()); // SyntaxError: Unexpected token ILLEGAL

1 个答案:

答案 0 :(得分:6)

因为语法要求在数字之后将.解析为该数字的一部分,因为它将用于例如1.5。如果要将其用作数字文字的成员运算符,则需要消除.的歧义:

1..toString();  // "1"
1.0.toString(); // "1"
(1).toString(); // "1"

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

这由规范中的NumericLiteral grammar显示。