为什么我必须包装一个数字来调用它的方法?

时间:2011-05-12 23:01:11

标签: javascript

js> (5).toString(2)
101

js> 5.toString(2)  
js: "<stdin>", line 53: missing ; before statement
js: 5.toString(2)
js: ..........^
js> 

4 个答案:

答案 0 :(得分:6)

Javascript假设(奇怪)数字后跟一个点表示点是小数点。这是违反直觉的,但至少它是可靠的。

关于如何处理这个问题,您有几种选择:

(5).toString(2); #1
5..toString(2);  #2
5.0.toString(2); #3
5 .toString(2);  #4

Stackoverflow的语法高亮显示器向您显示,在#2和#3中,第一个点被认为是数字的一部分,第二个点被认为是运算符。在#4中,我们可以看到空格告诉解析器数字已经结束。

答案 1 :(得分:1)

因为没有括号,5.toString()中的点被解释为小数点。如果没有括号,解释器会将该字符序列解释为浮点字面值。

答案 2 :(得分:0)

在Javascript中,数字可能是浮点数,因此5.0是有效数字。当您使用5.toString时,toString似乎是数字的小数部分。 Javascript的解析器不处理这种情况。

其他一些语言(例如Ruby)处理方式不同。

答案 3 :(得分:0)

解释器首先尝试将.解析为小数点,因此它期望toString为数字。请注意,以下内容有效,因为它已经收到了小数:

js> 5.0.toString(2); // -> "101"
相关问题