我们知道,在数学运算中,有 “先乘除后加减” 的运算规则,在我们程序语言中一样有运算符的优先级问题,来决定我们运算的顺序问题,这就是运算符的优先级。
即所谓运算符的优先级,指的是在含有多个逻辑运算符的式子中,到底应该先计算哪一个,后计算哪一个。
JavaScript 中运算符的运算规则是,优先级高的运算符先执行,优先级低的运算符后执行,同一优先级的运算符按照从左到右的顺序进行。
需要注意的是,JavaScript 中大部分运算符都是从左向右执行的,只有单目运算符、赋值运算符它们是从右向左执行的。
JavaScript 运算符中,如果有小括号,即 ()
,则小括号的优先级最高。
优先级 | 分类 | 运算符 | 结合性 |
---|---|---|---|
1 | 逗号运算符 | , | 从左到右 |
2 | 赋值运算符 | =、+=、-=、*=、/=、 %=、 >=、 <<=、&=、^=、|= | 从右到左 |
3 | 逻辑或 | || | 从左到右 |
4 | 逻辑与 | && | 从左到右 |
5 | 按位或 | | | 从左到右 |
6 | 按位异或 | ^ | 从左到右 |
7 | 按位与 | & | 从左到右 |
8 | 相等/不等 | ==、!= | 从左到右 |
9 | 关系运算符 | <、<=、>、>= | 从左到右 |
10 | 位移运算符 | <<、>> | 从左到右 |
11 | 加法/减法 | +、- | 从左到右 |
12 | 乘法/除法/取余 | *(乘号)、/、% | 从左到右 |
13 | 单目运算符 | !、*(指针)、& 、++、–、+(正号)、-(负号) | 从右到左 |
14 | 后缀运算符 | ( )、[ ]、-> | 从左到右 |
注意:优先级值越大,表示优先级越高。
乘除优先级比加减高
<!DOCTYPE html>
<html>
<head>
<title>JavaScript运算符优先级</title>
<script type="text/javascript">
console.log("嗨客网(www.haicoder.net)");
var a = 1 + 2 * 3;
var b = 10 - 2 / 4;
console.log("a =", a, "b =",b);
</script>
</head>
</html>
程序运行后,控制台输出如下:
我们首先定义了 变量 a,其值为表达式 1+2*3
的结果,因为乘法的优先级高于加法,因此这里我们先计算乘法,再计算加法,所以最终结果为 1+6=7
。
接着我们定义变量 b,其值为表达式 10 - 2 / 4
的结果,因为除法的优先级高于减法,因此这里我们先计算除法,再计算减法,所以最终结果为 10-0.5=9.5
。
小括号的运算符优先级最高
<!DOCTYPE html>
<html>
<head>
<title>小括号的运算符优先级最高</title>
<script type="text/javascript">
console.log("嗨客网(www.haicoder.net)");
var a = (1 + 2) * 3;
var b = (10 - 2) / 4;
console.log("a =", a, "b =",b);
</script>
</head>
</html>
程序运行后,控制台输出如下:
我们首先定义了变量 a,其值为表达式 (1 + 2) * 3
的结果,因为小括号的运算符优先级最高,因此这里我们先计算小括号里面的加法,再计算乘法,所以最终结果为 3*3=9
。
接着我们定义变量 b,其值为表达式 (10 - 2) / 4
的结果,因为小括号的运算符优先级最高,因此这里我们先计算减法,再计算除法,所以最终结果为 8 / 4 = 2
。
即所谓运算符的优先级,指的是在含有多个逻辑运算符的式子中,到底应该先计算哪一个,后计算哪一个。
JavaScript 中运算符的运算规则是,优先级高的运算符先执行,优先级低的运算符后执行,同一优先级的运算符按照从左到右的顺序进行。
JavaScript 运算符中,如果有小括号,即 ()
,则小括号的优先级最高。