优先级
运算符的优先级决定了表达式中运算执行的先后顺序,优先级高的运算符最先被执行.
关联性
关联性决定了相同优先级的运算符的执行顺序.
a OP b OP c
- 左关联:
(a OP b) OP c - 右关联:
a OP (b OP c)
运算符
以下运算符按优先级从高到低排列
- 圆括号():
( a + b )没有关联性 - 成员访问.:
a.b.c左关联;成员访问[]:a[b][c]左关联;可选成员访问?.:a?.b?.c左关联;函数调用:a()左关联;new操作符:new a(args)没有关联性 - new操作符:
new a()没有关联性 - 后置递增++:
a++没有关联性; 后置递减--:a--没有关联性 - 逻辑非!:
!!a右关联;按位非~:~~a右关联;一元加法+:+a右关联;一元减法-:-a右关联;前置递增++:++a右关联;前置递减--:--a右关联;typeof:typeof typeof a右关联;void:void a右关联;delete:delete a.b右关联;await:await a()右关联 - 幂**:
a ** b ** c右关联 - 乘法*:
a * b * c左关联;除法/:a/b/c左关联;取模%:a%b%c左关联 - 加法+:
a + b + c左关联;减法-:a - b - c左关联 - 按位左移<<:
a << b << c左关联;按位右移>>:a >> b >> c左关联;无符号右移>>>:a >>> b >>> c左关联 - 小于等于<=:
a <= b <= c左关联;小于<:a < b < c左关联;大于等于>=:a >= b >= c左关联;大于>:a > b > c左关联;in:a in b in c左关联;instanceof:a instanceof b instanceof c左关联 - 等于==:
a == b == c左关联;不等于!=:a != b != c左关联;全等===:a === b === c左关联;不全等!==:a !== b !== c左关联 - 按位与&:
a & b & c左关联 - 按位异或^:
a ^ b ^ c左关联 - 按位或|:
a | b | c左关联 - 逻辑与&&:
a && b && c左关联 - 逻辑或||:
a || b || c左关联 - 空值合并??:
a ?? b ?? c左关联 - 条件运算符?::
a ? b : c ? d : e右关联 - 赋值运算符均为右关联 = :
a = b = c;+=:a+=b;-=:a-=b;**=:a**=b;*=:a*=b;/=:a/=b;%=:a%=b;<<=:a<<=b;>>=:a>>=b;>>>=:a>>>=b;&=:a&=b;^=:a^=b;|=:a|=b;&&=:a&&=b;||=:a||=b;??=:a??=b - yied:
yield a右关联;yield*:yield* a()右关联 - 展开运算符...:
...a没有关联性 - 逗号,:
a,b左关联