运算符的优先级和结合性规定了它们在复杂的表达式中的运算顺序。运算符的执行顺序称为运算符的优先级。优先级高的运算符先于优先级低的运算符执行运算。例如:
图 1:运算符的优先级及结合性结果
w=x+y*z;
执行加法运算的+
运算符的优先级低于*
运算符,所以y*z
将先被执行,乘法运算执行完后得到的结果再和 x 相加。
运算符的优先级可以通过使用圆括号来改变,例如为了让加法先执行,乘法后执行,可以修改上面的表达式为:
w=(x+y)*z;
这样就会先执行x+y
,得到和后再和 z 进行乘法运算。
对于相同优先级的运算符的执行顺序,则由运算符的结合性来决定。运算符的结合性包括:从右至左和从左至右两种。从右至左的结合性指的是:运算的执行是按由右到左的顺序进行。从左至右的结合性刚好相反。
运算符的优先级及其结合性见表 1 。
运算符 | 结合性 | 优先级 |
---|---|---|
.、[ ]、( ) | 从左到右 |
高 ↑ | | | | | | | | | | | 低 |
++、–、-、!、new、typeof |
从右到左
|
|
*、/、% | 从左到右 | |
+、- | 从左到右 | |
<、<=、>、>=、in、instanceof | 从左到右 | |
==、!=、===、!== | 从左到右 | |
&& | 从左到右 | |
II | 从左到右 | |
?: | 从右到左 | |
=、*=、/=、%=、+=、-=、&=、^=、!= | 从右到左 | |
, | 从左到右 |
说明:同一行的运算符优先级相冋;不同行的运算符, 从上往下,优先级由高到低依次排列。
【例 1】运算符的优先级及结合性示例。
<!doctype html> <html> <head> <meta charset="utf-8"> <title>运算符的优先级及结合性示例</title> <script> //根据默认的优先级和结合性先进行乘法运算,再取模,最后才进行加法运算 var expr1 = 3 + 5 * 5 % 3; //使用()修改优先级,首先进行加法运算,然后按从左至右的结合性依次进行乘法和取模运算 var expr2 = (3 + 5) * 5 % 3; //使用()修改优先级,使得加法和取模运算优先级相同且最高,首先进行加法和取模运算,最后再进行乘法运算 var expr3 = (3 + 5) * (5 % 3); console.log("expr1 = " + expr1); console.log("expr2 = " + expr2); console.log("expr3 = " + expr3); </script> </head><body> </body> </html>
上述代码在 Chrome 浏览器的控制台中的运行结果如图 1 所示。
图 1:运算符的优先级及结合性结果
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/23944.html