我输入几乎相同的输入,但以下2种计算的类型不同,有人可以指出原因吗?
<html>
<head></head>
<body>
<script type="text/javascript">
console.log(typeof 1/0);
console.log(typeof (1/0));
</script>
</body>
</html>
&#13;
我相信在这两种情况下答案都是1/0 =&gt; &#39; Infinity&#39;,为什么我会得到不同的结果。
答案 0 :(得分:5)
JavaScript运算符优先级:MDN documentation
如您所见,typeof
的优先级别为16,而除法的优先级别为14.这意味着,在没有括号的情况下,将首先评估typeof
。相关的运算符优先级为:
我们将您的表达式评估为:
typeof 1/0 --> "number"/0 --> "NaN"
typeof (1/0) --> typeof Infinity --> "number"
在第一行,typeof
具有更高的优先级,因此我们首先评估typeof 1
。这评估为“数字”,不能除以零,所以我们得到NaN。
在第二行,首先评估(1/0)
,因为Grouping具有最高优先级(20)。它的计算结果为NaN,其类型为“number”。
答案 1 :(得分:1)
将第一个语句看作(类型1)/ 0