Js toString它是如何工作的?

时间:2012-11-26 06:59:34

标签: javascript

56.toString不起作用抛出异常。 56..toString工作正常。

有谁可以解释这两个陈述之间有什么区别?

56.toString(); //throws exception
56..toString(); //Works Fine.

它如何运作?

3 个答案:

答案 0 :(得分:3)

数字文字有些特殊,因为属性访问.可以用小数点.

组合

当解析器遇到56.时,它需要一个数字(或没有任何数字)来跟随它。当您撰写56..toString()时,您将获得toString()的{​​{1}}

答案 1 :(得分:2)

这对于toString()方法来说不是问题,只是56. toString会认为它是56.0,但它没有'0',所以它会失败。

工作正常或像这样:

(56.).toString()

56..toString()

答案 2 :(得分:0)

这里的问题是当你输入

56.toString()

JavaScript认为56是一个变量名,你试图访问它的toString()方法。但这不起作用,因为56不是变量,它甚至不是有效的变量名,因此导致编译错误。 (变量名必须以字母开头)

Check here for JS variable naming rules

但是当你在56(56.)后面添加一个点时,它就变成了一个数字文字,语言为它创建了一个Number类的实例,然后尝试解析Number实例上的toString()方法。由于Number类定义了一个名为toString()的方法,然后它可以工作。

56..toString();

相当于

(new Number(56.)).toString();

这里要理解的关键是数字文字(56.)和方法访问操作符(variable.methodName())之间的区别