美文网首页
为什么2.toString()会抛错

为什么2.toString()会抛错

作者: 奔跑的丸子129 | 来源:发表于2019-01-15 10:45 被阅读0次

    在 JavaScript 里,Number 类型有很多方法,包括 toString()、toFixed() 等等,通常调用时都会先定义一个变量,例如

    var num = 2;
    num.toString();  // "2"
    

    但是如果直接用2.toString(),就会抛出一个异常:“Uncaught SyntaxError: Invalid or unexpected token”。以前我一直以为是数字字面量不能调用方法,也没有去深究,今天看到网站别人博客上用2..toString()写法能正常运行并得出正确结果,才仔细查看了下原因:
    之所以会报错,是因为在这里的 . 发生了歧义。它既可以理解为小数点,也可以理解为对方法的调用,问题就出在这里,我们想要后一种理解,而实际上,因为这个点紧跟于一个数字之后,按照规范,解释器就把它判断为一个小数点。我们也可以看下抛出的异常信息:“标识符紧跟于一个数字字面量之后。”说明 2.toString() 在解释器看来其实是:
    (2.)toString();
    所以只要再加上一个点就可以了:2..toString(),第一个点是数字的一部分,2. 被自动解释为整数值 2,而第二个点则是调用方法。

    下面几种写法也是可行的:

    (2).toString();
    2 .toString();  //加个空格
    2.0.toString();
    

    抛出异常仅限于数字是整数的情况,如果数字本身就含有小数点,比如 2.6.toString() ,是完全正常的。

    相关文章

      网友评论

          本文标题:为什么2.toString()会抛错

          本文链接:https://www.haomeiwen.com/subject/lfmedqtx.html