我输入的内容几乎相同,但是以下2种计算的类型不同,有人可以指出原因吗?



<html>
<head></head>
<body>

<script type="text/javascript">

console.log(typeof 1/0);
console.log(typeof (1/0));

</script>

</body>
</html> 





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

最佳答案

JavaScript运算符优先级:MDN documentation

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


分组:20
类型:16
师:14


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

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


在第一行,typeof具有更高的优先级,因此我们首先评估typeof 1。结果为“数字”,不能除以零,因此得到NaN。

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

关于javascript - 为Javascript中几乎相同的输入获取不同的typeof,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50450372/

10-13 03:39