数学课上学过,当一个公式中存在乘除号时应先被计算,再计算加减号。

JavaScript 中也是,当一个表达式中存在多个运算符时,执行顺序由运算符的优先级决定。

$$jsdemo$$
$$edit$$
let result = 5 + 2 * 3 // 11
alert(result)

参考完整的运算符优先级汇总表 - MDN

$$tip

赋值运算符也有优先级,并且优先级很低,所以赋值运算符几乎总是最后执行。

$$

分组运算符

( ... ) 分组运算符的优先级是最高的,它可以帮助我们改变运算顺序。

$$jsdemo$$
$$edit$$
let result = 5 + 2 * 3 // 11
alert(result)
result = (5 + 2) * 3 // 21
alert(result)

$$tip

当不明确哪个运算符优先级高时,可以用分组运算符来明确先后顺序,多用分组运算符没有坏处。

$$


练习

  1. 以下的计算结果是什么呢,试着口算一下。
3 + 2 * 5 ** 2
4 + 2 * 3 == 2 + 2 ** 3
-1 + 4 * 2 > 5 + 6 / 2

$$answer

$$jsdemo$$
$$edit$$
alert(3 + 2 * 5 ** 2) // 53
alert(4 + 2 * 3 == 2 + 2 ** 3) // true
alert(-1 + 4 * 2 > 5 + 6 / 2) // false

$$