Javascript中(1.toString()和1.toString()的内部发生了什么

Javascript中(1.toString()和1.toString()的内部发生了什么,javascript,Javascript,在JavaScript控制台中,如果键入以下内容: 1.toString(); // Uncaught SyntaxError: Invalid or unexpected token (1).toString(); // "1" JS编译器中的这两条语句是怎么回事?1.toString()将1视为一个整数,并在之后使用数字 在(1).toString(),(1)是一个表达式,其中使用调用方法 ()是分组运算符,它返回其中表达式的值。在您的例子中,它是1,一个原始数字。因此,它可以被装箱到一

在JavaScript控制台中,如果键入以下内容:

1.toString();  // Uncaught SyntaxError: Invalid or unexpected token
(1).toString(); // "1"
JS编译器中的这两条语句是怎么回事?

1.toString()
将1视为一个整数,并在
之后使用数字

(1).toString()
(1)是一个表达式,其中使用
调用方法

()
是分组运算符,它返回其中表达式的值。在您的例子中,它是
1
,一个原始数字。因此,它可以被装箱到一个
Number
对象中,并调用其方法
toString

但是对于
1.toString()
,JS引擎无法确定
是什么意思-点运算符(对于对象方法)还是浮点数

要解决此混淆,如果不使用分组运算符,有两种方法:

  • 1.toString()
    //一个空格,其作用类似于分组运算符
  • 1..toString()
    //两个点,其中第二个点被视为点运算符

    • 同意@Prajeet@Leo

      如-点表示法所述

      1 //Next Line
      .toString() //Prints "1"
      
      来自Mozilla.org:

      我们必须指出点是分隔小数部分还是对象属性。1.toString()//这将给出错误,因为在基本数据类型Number/integer上没有toString方法,但当您执行(1.toString())时,javascript会在内部执行类型corresion,并将数字1转换为字符串“1”然后对其应用toString方法。“1”。toString();//"1". 你的理解是有道理的。但是如果
      function(){}()//意外的标记会怎么样呢。和(function(){}())//没关系为什么不能直接调用匿名函数?@lvaroGonzález@atul,那么1.2.toString()呢;//“1.2”@atul:你说的不对。原语值确实没有方法,但是
      (1)
      并没有将值转换为字符串,您可以通过执行
      typeof(1)
      1.0轻松找到它。toString()
      也可以工作。