运算符的优先级

所有运算符都拥有各自的优先级,优先级较高的运算符会先生效,优先连接左右两侧的值进行计算,然后优先级较低的运算符生效。如果运算符的优先级相等,则遵循从左到右的原则。

举一个简单的例子,在进行算术运算时,乘除法运算符的优先级高于加减法的优先级,示例代码如下。

let a: number = 1 + 2 * 3 + 4; //最终值为11

但如果加入括号,优先级就发生改变,会先计算括号内的内容,然后再计算括号外的内容。

let a: number = (1 + 2) * (3 + 4); //最终值为21

所有运算符都拥有各自的优先级。表4-11 列出了主要运算符的优先级。

Table 1. 表4-11 主要运算符的优先级
优先级 运算符 描述

1

()

表达式分组

2

·

成员(后面会详细介绍)

2

[]

成员(后面会详细介绍)

2

()

函数调用(后面会详细介绍)

2

new

创建(后面会详细介绍)

3

++

后缀递增

3

--

后缀递减

4

++

前缀递增

4

 — 

前缀递减

4

!

逻辑否

4

typeof

判断类型

5

**

求幂

6

*

6

/

6

%

取余

7

+

7

-

8

<<

左位移

8

>>

右位移

8

>>>

右位移(无正负符号)

9

<

小于

9

<=

小于或等于

9

>

大于

9

>=

大于或等于

9

in

遍历(后面会详细介绍)

9

instanceof

类型断言

10

==

相等

10

===

严格相等

10

!=

不相等

10

!==

严格不相等

11

&

按位与

12

^

按位异或

13

|

按位或

14

&&

逻辑与

15

||

逻辑否

16

?:

条件

17

=

赋值

17

+=

赋值

17

-=

赋值

17

*=

赋值

17

%=

赋值

17

&=

赋值

17

^=

赋值

17

|=

赋值

18

yield

暂停函数(后续章节介绍)

19

逗号