为了账号安全,请及时绑定邮箱和手机立即绑定

Javascript中数字后面加一点(如10.)再调用方法的神奇现象

Javascript中数字后面加一点(如10.)再调用方法的神奇现象

慕后森 2019-05-24 18:53:12
今天尝试直接用数字调用Number对象的方法,发现以下这个神奇的现象,望有知其所以然者多多指教。以下测试均用toString()方法为例,测试环境为Chrome58.0.3029.110(64-bit)0x01直接用数字调用toString()document.write(10.toString());此举显然行不通,并报以下错误:UncaughtSyntaxError:Invalidorunexpectedtoken0x02先在数字后加一点(.),再调用toString()document.write(10..toString());加了一点后,可以正常输出了。0x03改用八进制和十六进制试试,仍保留数字后的一点(.)document.write(010..toString());document.write(0x10..toString());神奇的是,改为八进制或十六进制后,又出现了报错:UncaughtSyntaxError:Unexpectedtoken.0x04依然用八进制和十六进制,但把数字后的一点(.)去掉document.write(010.toString());document.write(0x10.toString());把一点去掉后,又可以正常输出了。0x05结论在八进制和十六进制下,数字后不需加点就可直接调用Number对象的方法;而在十进制下,需要在数字后加上一点才能调用Number对象的方法。小弟只能观察到Javascript中数字调用方法这一神奇的特性,却不知其所以然,希望有知道其原理与知识点的同学多多指教。
查看完整描述

2 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

因为JavaScript的解释器不能确定数字后面"."的具体意义。可能是浮点数或者操作符。加了个点意义就确定了。Whydoes10..toString()work,but10.toString()doesnot?
                            
查看完整回答
反对 回复 2019-05-24
  • 2 回答
  • 0 关注
  • 632 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信