Javascript中模数的优先顺序是什么?

问题描述 投票:-1回答:3

如果我有以下代码

var num = 15 % 2 + 6 * 4;

例如......我想知道输出是什么,特别是我想知道模数的优先顺序(由%符号执行的操作)。模数是在加法和乘法运算之前还是之后进行的?

编辑:我已经查看了人们将我链接到的文章

MDN Operator Precedence

并且在提出问题之前已经这样做了,但不幸的是它没有包含足够的信息来完全回答我的问题,因此我在这里问。只是为了节省人们再次链接的努力。

更新:调查associativity作为一个提议的答案下面的评论中的讨论的指示是该问题与相关性(如果你将原谅意外双关语)相关联。

更新:语法编辑(^ _ ^?)

javascript operator-precedence modulus
3个回答
3
投票

从技术上讲,它是remainder operator(比我的更多的数学思想模数会不同地处理符号差异),并且它具有与乘法和除法相同的优先级和相关性。

所以

var num = 15 % 2 + 6 * 4;

var num = (15 % 2) + (6 * 4);

MDN在运算符优先级和关联性方面具有a handy article


重新评论这个问题:

...我用示例代码得到num25变量值,但var num = 3 * 15 % 2 + 6 * 4;也导致num变量,console.log显示为也带有25的值...

这是因为15 % 2 + 6 * 43 * 15 % 2 + 6 * 4都是25。让我们分解一下:

你的第一个例子:15 % 2 + 6 * 4

15 % 2 + 6 * 4
1      + 6 * 4
1      + 24
25

你的第二个例子:3 * 15 % 2 + 6 * 4

3 * 15 % 2 + 6 * 4
45     % 2 + 6 * 4
1          + 6 * 4
1          + 24
25

1
投票

基本上你是从左到右,但你先做加号,然后加倍,然后除以,剩下的东西是除法。所以

 var num = 15 % 2 + 6 * 4;

基本上是15%2 = 1


0
投票

模数应该具有与除法,乘法和指数相同的优先级。见here

© www.soinside.com 2019 - 2024. All rights reserved.