Priority ng Operator ng JavaScript
运算符优先级(Operator Precedence)描述了算术表达式中运算的执行顺序。
Ang priority ng pakikitungo (*) at pagkakalitaw (/) ay mas mataas kaysa sa pagdami (+) at pagbawas (-).
Mga Halimbawa
Tulad ng tradisyonal na matematika, kalkulahin muna ang pakikitungo:
let x = 100 + 50 * 3;
Kung ginagamit ang mga panaklong, kalkulahin muna ang ekspresyon sa loob ng panaklong:
let x = (100 + 50) * 3;
Ang mga operator na may parehong priority (tulad ng * at /) ay kalkulahin mula sa kaliwa papunta sa kanan:
let x = 100 / 50 * 3;
Halaga ng priority ng operator
Ang ekspresyon sa loob ng mga panaklong ay kalkulahin bago ang ibang bahagi ng ekspresyon, at ang mga function ay isinasagawa bago gamitin ang resulta sa ibang bahagi ng ekspresyon:
Priority | Operator | Paglalarawan | Halimbawa |
---|---|---|---|
18 | ( ) | Ekspresyong pinagsama-sama | (100 + 50) * 3 |
17 | . | 属于成员 | person.name |
17 | [] | 属于成员 | person["name"] |
17 | ?. | 可选链 ES2020 | 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 | ** | 指数运算 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 | & | 按位与 | 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 |