JavaScript 运算符优先级

优先级描述了在算术表达式中操作的执行顺序。

实例

在传统数学中,乘法先执行:

let x = 100 + 50 * 3;

亲自试一试

使用括号时,括号内的操作先计算:

let x = (100 + 50) * 3;

亲自试一试

当运算符具有相同的优先级(如 + 和 -),它们从左到右计算:

let x = 100 / 50 * 3;

亲自试一试

运算符优先级值

括号内的表达式先于其余表达式计算。

函数在结果用于其余表达式之前执行。

运算符 描述 例子
18 ( ) 表达式分组 (100 + 50) * 3
17 . 成员 car.name
17 [] 成员 car["name"]
17 ?. 可选链 ES2020 x ?. y
17 () 函数调用 myFunction()
17 new 带参数的新建 new Date("June 6,2025")
16 new 无参数的新建 new Date()

递增运算符

后缀递增先于前缀递增执行。

15 ++ 后缀递增 i++
15 -- 后缀递减 i--
14 ++ 前缀递增 ++i
14 -- 前缀递减 --i

NOT 运算符

14 ! 逻辑 NOT !(x==y)
14 ~ 位 NOT ~x

一元运算符

14 + 一元加 +x
14 - 一元减 -x
14 typeof 数据类型 typeof x
14 void 求值 Void void(0)
14 delete 属性删除 delete myCar.color

算术运算符

乘方先于乘法执行。

乘法和除法先于加法和减法执行。

13 ** 乘方 ES2016 10 ** 2
12 * 乘法 10 * 5
12 / 除法 10 / 5
12 % 取余 10 % 5
11 + 加法 10 + 5
11 - 减法 10 - 5
11 + 连接 "Bill" + "Gates"

移位运算符

10 << 左移 x << 2
10 >> 右移(有符号) x >> 2
10 >>> 右移(无符号) x >>> 2

关系运算符

9 in 对象中的属性 "PI" in Math
9 instanceof 对象的实例 x instanceof Array

比较运算符

9 < 小于 x < y
9 <= 小于等于 x <= y
9 > 大于 x > y
9 >= 大于等于 x >= Array
8 == 等于 x == y
8 === 严格等于 x === y
8 != 不等于 x != y
8 !== 严格不等于 x !== y

位运算符

7 & 位 AND x & y
6 ^ 位 XOR x ^ y
5 | 位 OR x | y

逻辑运算符

4 && 逻辑 AND x && y
3 || 逻辑 OR x || y
3 ?? 空值合并 ES2020 x ?? y

条件(三元)运算符

2 ? : 条件 ? "yes" : "no"

赋值运算符

赋值在其他操作之后执行。

2 = 简单赋值 x = y
2 += 加法赋值 x += y
2 -= 减法赋值 x -= y
2 *= 乘法赋值 x *= y
2 **= 乘方赋值 x **= y
2 /= 除法赋值 x /= y
2 %= 取余赋值 x %= y
2 <<= 左移赋值 x <<= y
2 >>= 右移赋值 x >>= y
2 >>>= 无符号右移 x >>>= y
2 &= 位 AND 赋值 x &= y
2 |= 位 OR 赋值 x |= y
2 ^= 位 XOR 赋值 x ^= y
2 &= 逻辑 AND 赋值 x &= y
2 ||= 逻辑 OR 赋值 x ||= y
2 : 冒号赋值 x : 5
2 => 箭头 x => y
2 yield 暂停/恢复 yield x
2 yield* 委托 yield* x
2 ... 扩展 ...x
1 , 逗号 x , y