代码之家  ›  专栏  ›  技术社区  ›  Deadpool

在javascript中为几乎相同的输入获取不同的类型

  •  0
  • Deadpool  · 技术社区  · 7 年前

    我输入的内容几乎相同,但下面两个计算的类型不同,有人能指出原因吗?

    <html>
    <head></head>
    <body>
    
    <script type="text/javascript">
    
    console.log(typeof 1/0);
    console.log(typeof (1/0));
    
    </script>
    
    </body>
    </html> 

    我相信在这两种情况下,答案都是1/0=>'无穷大',所以为什么我会得到不同的结果。

    2 回复  |  直到 7 年前
        1
  •  5
  •   Amy    7 年前

    javascript运算符优先级: MDN documentation

    如您所见,的优先级 typeof 是16,而除法的优先级是14。这意味着,在没有括号的情况下, 类型 将首先进行评估。相关的运算符优先级为:

    • 分组:20
    • 类型:16
    • 部门:14

    我们将您的表达式评估为:

    typeof 1/0   --> "number"/0      --> "NaN"
    typeof (1/0) --> typeof Infinity --> "number"
    

    在第一行, 类型 具有更高的优先级,因此我们评估 typeof 1 第一。它的计算结果是“数字”,不能被零除,所以我们得到NaN。

    在第二行, (1/0) 首先评估是因为 Grouping 具有最高优先级(20)。它的计算结果为NaN,它的类型为“数字”。

        2
  •  1
  •   shivani tiwari    7 年前

    将第一条语句视为(类型1)/0