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

What is the order of precedence for modulus in Javascript?

如果我有下面的代码

var num = 15 % 2 + 6 * 4;

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

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

MDN Operator Precedence

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

更新:调查associativity,因为在一个建议的答案下方的评论中的讨论表明该问题与关联性相关(如果您原谅偶然的双关语)。

更新: 语法修改(^_^?)

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

从技术上讲,它是 remainder operator(比我更多的数学头脑认为模数会以不同方式处理符号差异),并且它具有与乘法和除法相同的优先级和结合性。

所以

var num = 15 % 2 + 6 * 4;

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

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


回复您对问题的评论:

...I get the num variable value of 25 with the example code, yet var num = 3 * 15 % 2 + 6 * 4; also results in a num variable which a console.log shows as also bearing the value of 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

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

 var num = 15 % 2 + 6 * 4;

基本上是 15 % 2 = 1