我输入几乎相同的输入,但是以下2种计算的类型是不同的,有人可以指出为什么?
<html>
<head></head>
<body>
<script type="text/javascript">
console.log(typeof 1/0);
console.log(typeof (1/0));
</script>
</body>
</html> Run Code Online (Sandbox Code Playgroud)
我相信在这两种情况下答案都是1/0 =>'Infinity',所以为什么我会得到不同的结果.
JavaScript运算符优先级: MDN文档
如您所见,优先级为typeof16,而除法的优先级为14.这意味着,在没有括号的情况下,typeof将首先计算.相关的运营商优先级是:
我们将您的表达式评估为:
typeof 1/0 --> "number"/0 --> "NaN"
typeof (1/0) --> typeof Infinity --> "number"
Run Code Online (Sandbox Code Playgroud)
在第一行,typeof有一个更高的优先级,所以我们typeof 1先评估.这评估为"数字",不能除以零,所以我们得到NaN.
在第二行,(1/0)首先进行评估,因为分组具有最高优先级(20).它评估为NaN,其类型为"number".