JavaScript中的运算符优先级决定了表达式中多个运算符的执行先后顺序,当赋值、自增等操作混合出现时,优先级规则会直接影响最终的计算结果,理解这些规则是写出正确逻辑代码的基础。

JavaScript运算符优先级核心规则
运算符优先级从高到低排列,优先级越高的运算符会先执行。自增运算符++的优先级高于赋值运算符=,而赋值运算符的优先级相对较低,通常会最后执行。我们可以通过下表查看常见运算符的优先级排序:
| 运算符类型 | 运算符 | 优先级(数字越大优先级越低) |
|---|---|---|
| 自增/自减(后置) | ++ -- | 1 |
| 自增/自减(前置) | ++ -- | 2 |
| 乘法、除法、取余 | * / % | 3 |
| 加法、减法 | + - | 4 |
| 赋值运算符 | = += -= 等 | 5 |
自增操作的两种形式与执行逻辑
自增操作分为前置自增++a和后置自增a++,二者的执行逻辑有明显区别:
- 前置自增:先将变量的值加1,再返回加1后的结果参与后续运算
- 后置自增:先返回变量当前的值参与后续运算,再将变量的值加1
我们可以通过以下代码验证二者的区别:
let a = 1; let b = ++a; // 前置自增,a先加1变为2,再将2赋值给b console.log(a); // 输出2 console.log(b); // 输出2 let c = 1; let d = c++; // 后置自增,先将c当前值1赋值给d,c再加1变为2 console.log(c); // 输出2 console.log(d); // 输出1
赋值操作的执行顺序
赋值运算符=的优先级较低,执行顺序是从右到左。当赋值操作和自增操作混合时,会先执行优先级更高的自增操作,再执行赋值操作。例如以下场景:
let x = 1; let y = 2; // 先执行x++,返回1作为右值,再将1赋值给y,最后x变为2 y = x++; console.log(x); // 输出2 console.log(y); // 输出1
混合场景下的运算结果分析
当多个自增和赋值操作同时出现时,需要结合优先级和结合性判断执行顺序,以下是几个常见的易错场景:
场景一:连续后置自增赋值
let m = 1; let n = m++ + m++; // 第一个m++返回1,m变为2;第二个m++返回2,m变为3;相加结果为3赋值给n console.log(m); // 输出3 console.log(n); // 输出3
场景二:前置与后置自增混合
let p = 1; let q = ++p + p++; // 前置++p让p变为2,返回2;p++返回2,p变为3;相加结果为4赋值给q console.log(p); // 输出3 console.log(q); // 输出4
场景三:赋值与自增的嵌套
let s = 1; let t = 1; t = s++ + (t = 3); // 先执行s++返回1,s变为2;再执行括号里的t=3,t变为3;相加1+3=4赋值给t console.log(s); // 输出2 console.log(t); // 输出4
常见注意事项
- 避免在一个表达式中多次使用同一个变量的自增操作,可读性差且容易出错
- 如果需要先使用变量值再自增,优先使用后置自增;如果需要先自增再使用,优先使用前置自增
- 当对优先级规则不确定时,可以使用括号
()改变执行顺序,括号的优先级最高,能明确运算逻辑
注意:JavaScript的运算符优先级规则是固定的,实际开发中不需要死记所有优先级,只需要掌握赋值、自增、算术运算这几类常用规则的优先级即可,复杂场景优先用括号明确逻辑。
JavaScript运算符优先级赋值操作自增操作修改时间:2026-06-18 00:12:25