阅读 (1)

JavaScript 运算符优先级

运算符优先级(Operator Precedence)描述了算术表达式中运算的执行顺序。

乘法 (*) 和除法 (/) 的优先级高于加法 (+) 和减法 (-)。

实例

与传统数学一样,先进行乘法运算:

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?.可选链 ES2020x ?. y
17()函数调用myFunction()
17new带参的新建new Date("June 5,2022")
16new不带参的新建new Date()

增量运算符

后缀递增在前缀递增之前执行。

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

NOT 运算符

14!逻辑非!(x==y)
14~按位非~x

一元运算符

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

算术运算符

指数运算在乘法之前执行。

乘法和除法在加法和减法之前执行。

13**指数运算 ES201610 ** 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

关系运算符

9in对象中的属性"PI" in Math
9instanceof对象的实例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??空值合并 ES2020x ?? 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
2yield暂停 / 恢复yield x
2yield*委托运算符yield* x
2...展开运算符... x
1,逗号x , y

另请参阅

教程:JavaScript 运算符

参考手册:JavaScript 运算符