为什么我不能在 Number 上使用 toString() 除非我先将它声明为变量?
Why can I not use toString() on a Number unless I declare it as a variable first?
例如:
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';
您 运行 遇到了低级句法问题。数字的标记语法包括小数点后的小数部分的可能性。该语法优先于 .
作为 属性 引用运算符的重载含义。当解析器看到 5.
时,它希望看到数字的小数部分。非数字被视为错误。
如果您想将 .
用作 属性 引用,您必须满足标记语法并将数字封装在允许解析器看到 .
你想要的方式:
var str = (5).toString();
在那里,您的数字常量被括在括号中。括号后的 .
可以是 属性 引用运算符,因此对 .toString()
的调用按预期工作。
例如:
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';
您 运行 遇到了低级句法问题。数字的标记语法包括小数点后的小数部分的可能性。该语法优先于 .
作为 属性 引用运算符的重载含义。当解析器看到 5.
时,它希望看到数字的小数部分。非数字被视为错误。
如果您想将 .
用作 属性 引用,您必须满足标记语法并将数字封装在允许解析器看到 .
你想要的方式:
var str = (5).toString();
在那里,您的数字常量被括在括号中。括号后的 .
可以是 属性 引用运算符,因此对 .toString()
的调用按预期工作。