为什么我不能在Number上使用toString(),除非我先将它声明为变量?

时间:2015-04-09 06:31:00

标签: javascript numbers

例如:

var num = 5;
num.toString(2); // Returns the binary representation 101

但如果我这样做

5.toString(2); // Error

我认为第二个例子应该可以工作,因为它似乎很好用字符串。例如:

// BOTH WORK

var str = 'hi';
str.toUpperCase(); // Returns 'HI';

'hi'.toUpperCase(); // Returns 'HI';

1 个答案:

答案 0 :(得分:2)

您遇到了一个低级别的语法问题。数字的标记语法包括小数点后面的小数部分的可能性。该语法优先于.作为属性引用运算符的重载含义。当解析器看到5.时,它希望看到该数字的小数部分。非数字被视为错误。

如果要使用.作为属性引用,则必须满足标记语法并将数字包含在某个构造中,以允许解析器以您希望的方式查看.

var str = (5).toString();

在那里,你的数字常量包含在括号中。括号后面的.只能是属性引用运算符,因此对.toString()的调用按预期工作。