运算符优先级(Operator Precedence)描述了算术表达式中运算的执行顺序。
乘法 (*) 和除法 (/) 的优先级高于加法 (+) 和减法 (-)。
实例
与传统数学一样,先进行乘法运算:
let x = 100 + 50 * 3; //250
使用圆括号时,先计算圆括号内的运算:
let x = (100 + 50) * 3; //450
优先级相同的运算(如 * 和 /)从左到右计算:
let x = 100 / 50 * 3; //6
括号中的表达式在表达式的其余部分之前计算,函数在结果用于表达式的其余部分之前执行:
优先级 | 运算符 | 描述 | 例子 |
18 | ( ) | (100 + 50) * 3 | |
17 | . | person.name | |
17 | [] | person["name"] | |
17 | ?. | x ?. y | |
17 | () | myFunction() | |
17 | new | new Date("June 5,2022") | |
16 | new | new Date() |
后缀递增在前缀递增之前执行。 | |||
15 | ++ | i++ | |
15 | -- | i-- | |
14 | ++ | ++i | |
14 | -- | --i | |
NOT 运算符 | |||
14 | ! | !(x==y) | |
14 | ~ | ~x | |
一元运算符 | |||
14 | + | +x | |
14 | - | -x | |
14 | typeof | typeof x | |
14 | void | void(0) | |
14 | delete | delete myCar.color |
算术运算符
指数运算在乘法之前执行。 乘法和除法在加法和减法之前执行。 | |||
13 | ** | 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 | & | x & y | |
6 | ^ | x ^ y | |
5 | | | x | y | |
逻辑运算符 | |||
4 | && | x && y | |
3 | || | x || y | |
3 | ?? | 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 |