JavaScript 运算符优先级
运算符优先级描述了在算术表达式中运算执行的顺序。
乘法 (*
) 和除法 (/
) 的优先级高于加法 (+
) 和减法 (-
)。
与传统数学一样,乘法先执行
let x = 100 + 50 * 3;
自己试试 »
使用括号时,括号内的运算先执行
let x = (100 + 50) * 3;
自己试试 »
优先级相同的运算(如 * 和 /)从左到右执行
let x = 100 / 50 * 3;
自己试试 »
运算符优先级值括号内的表达式在表达式其他部分之前计算函数在结果被用于表达式其他部分之前执行 |
|||
值 | 运算符 | 描述 | 示例 |
18 | ( ) | 表达式分组 | (100 + 50) * 3 |
17 | . | 成员访问 | person.name |
17 | [] | 成员访问 | person["name"] |
17 | ?. | 可选链 ES2020 | x ?. y |
17 | () | 函数调用 | myFunction() |
17 | new | 带参数的 new | new Date("June 5,2022") |
16 | new | 不带参数的 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 | + | 字符串连接 | "John" + "Doe" |
位移运算符 | |||
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 | & | 按位与 | x & y |
6 | ^ | 按位异或 | x ^ y |
5 | | | 按位或 | x | y |
逻辑运算符 | |||
4 | && | 逻辑与 | x && y |
3 | || | 逻辑或 | x || y |
3 | ?? | 空值合并运算符 ES2020 | x ?? y |
条件(三元)运算符 | |||
2 | ? : | 条件 | ? "yes" : "no" |
赋值运算符 赋值运算在其他运算之后执行 |
|||
2 | = | 简单赋值 | x = y |
2 | : | 冒号赋值 | x: 5 |
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 | |= | 按位或赋值 | x |= y |
2 | ^= | 按位异或赋值 | x ^= y |
2 | &&= | 逻辑与赋值 | x &&= y |
2 | ||= | 逻辑或赋值 | x ||= y |
2 | => | 箭头 | x => y |
2 | yield | 暂停/恢复 | yield x |
2 | yield* | 委托 | yield* x |
2 | ... | 展开运算符 | ... x |
1 | , | 逗号 | x , y |