如果我有以下代码
var num = 15 % 2 + 6 * 4;
例如......我想知道输出是什么,特别是我想知道模数的优先顺序(由%
符号执行的操作)。模数是在加法和乘法运算之前还是之后进行的?
编辑:我已经查看了人们将我链接到的文章
并且在提出问题之前已经这样做了,但不幸的是它没有包含足够的信息来完全回答我的问题,因此我在这里问。只是为了节省人们再次链接的努力。
更新:调查associativity作为一个提议的答案下面的评论中的讨论的指示是该问题与相关性(如果你将原谅意外双关语)相关联。
更新:语法编辑(^ _ ^?)
从技术上讲,它是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 * 4
和3 * 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
模数应该具有与除法,乘法和指数相同的优先级。见here