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

时间:2016-03-18 14:38:30

标签: javascript operator-precedence modulus

如果我有以下代码

var num = 15 % 2 + 6 * 4;

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

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

的文章

MDN Operator Precedence

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

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

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

3 个答案:

答案 0 :(得分:3)

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

所以

var num = 15 % 2 + 6 * 4;

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

MDN对运营商优先级和关联性有a handy article

重新评论这个问题:

  

...我使用示例代码获得num变量值25,但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 :(得分:1)

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

 var num = 15 % 2 + 6 * 4;

基本上是15%2 = 1

答案 2 :(得分:0)

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