56.toString
不工作会抛出异常。56..toString
工作正常 。
谁能解释这两种说法有什么区别?
56.toString(); //throws exception
56..toString(); //Works Fine.
这个怎么运作?
56.toString
不工作会抛出异常。56..toString
工作正常 。
谁能解释这两种说法有什么区别?
56.toString(); //throws exception
56..toString(); //Works Fine.
这个怎么运作?
数字文字有些特殊,因为属性访问.
可以与小数点混为一谈.
当解析器遇到56.
它时,它期望一个数字(或什么都没有)跟随它。当你写作时,56..toString()
你得到的toString()
是56.0
这对 toString() 方法没有问题,只是 56。toString 会认为它是 56.0,但它没有 '0',所以它会失败。
工作正常或像这样:
(56.).toString()
或者
56..toString()
这里的问题是当你输入
56.toString()
JavaScript 认为 56 是一个变量名,而您正试图访问它的 toString() 方法。但这不起作用,因为 56 不是变量,甚至不是有效的变量名,因此会导致编译错误。(变量名必须以字母开头)
但是当你在 56 (56.) 后面添加一个点时,它会变成一个数字文字,语言会为此创建一个 Number 类的实例,然后尝试解析 Number 实例上的 toString() 方法。由于 Number 类定义了一个名为 toString() 的方法,然后它就可以工作了。
56..toString();
相当于
(new Number(56.)).toString();
这里要理解的关键是数字文字(56.)和方法访问运算符(variable.methodName())之间的区别