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