括号在JavaScript中不改变运算符优先级,而是显式指定执行顺序,强制先计算括号内表达式;它支持嵌套、用于函数调用和分组,但不能改变运算符结合性。

JavaScript 中运算符的默认优先级由语言规范定义,括号 () 的作用不是“改变”优先级本身,而是**显式指定执行顺序**,让代码按你期望的方式求值,从而绕过默认优先级规则。
括号强制优先计算
括号内的表达式总是最先被计算,无论里面是什么运算符。它像一层“指令屏障”,告诉 JavaScript:“先算这里面的,再和其他部分组合”。
-
3 + 4 * 2按默认优先级先算4 * 2,结果是11 -
(3 + 4) * 2因括号存在,先算3 + 4,结果是14
嵌套括号控制多层逻辑
括号可以多层嵌套,从最内层向外逐层计算,适合复杂条件或混合运算。
-
2 * (3 + (4 - 1)):先算4 - 1 → 3,再算3 + 3 → 6,最后2 * 6 → 12 -
!(a && (b || c)):先算b || c,再与a做&&,最后取反
函数调用和分组也依赖括号
括号在 JS 中有双重角色:一是分组表达式,二是调用函数。两者都体现“优先执行”的语义。
立即学习“Java免费学习笔记(深入)”;
-
console.log(1 + 2 * 3):括号在这里是函数调用,但里面的1 + 2 * 3仍按默认优先级算(结果7) -
console.log((1 + 2) * 3):内层括号改变运算顺序,输出9 -
arr.sort().reverse():方法链中每个()都表示立即执行前一个操作的结果
注意:括号不改变运算符结合性
优先级决定谁先算,结合性决定同级运算符从左还是从右算。括号能覆盖优先级,但不能翻转结合性逻辑。
-
1 - 2 - 3是左结合,等价于(1 - 2) - 3 → -4 -
1 - (2 - 3)得到2,这是括号干预后的结果,不是改变了减法的结合性,而是跳过了默认分组 - 赋值运算符如
=是右结合:a = b = 5等价于a = (b = 5);加括号写成(a = b) = 5会报错,因为a = b不是可赋值的左值


















