欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > > 文章正文

Number调用toString()方法产生的问题,numbertostring

来源: javaer 分享于  点击 1458 次 点评:73

Number调用toString()方法产生的问题,numbertostring


转载地址  http://www.zuojj.com/archives/888.html


为什么会写此篇文章,其原因是前段时间有人问过我一个问题20.toString()的结果是多少?如果你是一个新手,看到这个问题,第一想到的结果应该是“20”,但是结果却和我们想的不相符,看一下几个例子:

//Outputs: "/abc/"
console.log(/abc/.toString());

//Outputs: "true"
console.log(true.toString());

//Outputs: "20.3"
console.log(20.3.toString());

//Outputs: Uncaught SyntaxError: Unexpected token ILLEGAL 
console.log(20.toString());

从上例结果可以看出Outputs3可以正常输出,Outputs4却报错。到底是何原因呢?究其原因还是“.”号的原因。当20.toString()的时候,这个“.”是不明确的,是小数点符号,还是通过“.”来调用方法即对象成员访问。因为没有20.toString这样的浮点数,所以才会报错。而20.3.toString(),第一个点被解释成浮点数的小数点,第二个点被解释成对象访问,所以没有报错。

那么我们如何来解决这个问题呢?有如下几种方式:

//方式一:
console.log(20..toString());

//Ouputs: 20
console.log(20.);

//方式二:
console.log(20 .toString());

//方式三:
console.log((20).toString());

//方式四:
console.log(20["toString"]());

综合以上几种方式,
方式一:等价于20.0.toString()。
方式二:因为浮点数中数字和点之间不会有空格,所以此处不会再把这个点当成浮点数的点来解析了。
方式三:个人比较推崇。加个括号确保解析器解析时不会混淆。
方式四:看起来比较别扭。



相关文章

    暂无相关文章

用户点评