JS: 1.toString OR (1).toString


1.toString();
(1).toString();
-1 .toString();

请问这几个的区别?
实际执行情况为,第一条浏览器抛错,后两条正确执行,这是为什么?

趣味 JavaScript

GalFun 12 years, 9 months ago

第一个:
1.toString() ,语法错误,这里由于 . 的作用为 小数点,将整体认为是一个小数,
可以试试 1.a , 1.b 同样有错误。
使用 1.0.toString() 可以规避这种错误

第二个:
(1).toString(); 显然避开了上边的错误,将整个表达式分成了 1 toString() 两部分
同样的使用 1 .toString() 可以规避这错误(加空格)。

第三个:

-1 .toString(); 这里有个优先级问题, 实际为 :-(1 .toString()); 那么进一步理解为:
0 - "1" = -1 (number) 这里有个隐式的类型转换。

guangye answered 12 years, 9 months ago

Your Answer