JavaScript定义了47个运算符,详细说明如表1所示。
各列说明如下:
- 优先级:表示运算符参与运算的先后顺序。数字越大,运算优先级就越高;数字相等,则运算等级相同,最终运算顺序将根据所处位置和结合性决定。
- 操作类型:表示参与运算的操作数的类型。
- 操作个数:表示运算符执行运算过程中需要的操作数的个数。
- 结果类型:表示运算符执行运算后返回的值的类型。
- 结合性:表示运算符执行运算的左右顺序,包括从左到右或从右到左。
- 左值:表示只能够出现在赋值运算符左侧的值,在JavaScript中主要指变量、对象的属性、数组的元素。
表1 JavaScript运算符
运算符 | 说明 | 优先级 | 操作类型 | 操作个数 | 结果类型 | 结合性 |
---|---|---|---|---|---|---|
++(双加号) | 先递增或后递增运算 | 14 | 左值 | 1 | 数值 | 从右到左 |
--(双减号) | 先递减或后递减运算 | 14 | 左值 | 1 | 数值 | 从右到左 |
-(减号) | 数值取反 | 14 | 数值 | 1 | 数值 | 从右到左 |
+(加号) | 转换为数值 | 14 | 数值 | 1 | 数值 | 从右到左 |
~(否定号) | 按位取反 | 14 | 整数 | 1 | 整数 | 从右到左 |
!(叹号) | 逻辑取反(逻辑非) | 14 | 布尔值 | 1 | 布尔值 | 从右到左 |
delete | 删除属性 | 14 | 左值 | 1 | 布尔值 | 从右到左 |
typeof | 检测操作数类型 | 14 | 任意 | 1 | 字符串 | 从右到左 |
void | 返回undefined值 | 14 | 任意 | 1 | undefined | 从右到左 |
*(星号) | 乘法运算 | 13 | 数值 | 2 | 数值 | 从左到右 |
/(斜杠) | 除法运算 | 13 | 数值 | 2 | 数值 | 从左到右 |
%(百分号) | 求余运算(取模运算) | 13 | 数值 | 2 | 数值 | 从左到右 |
+(加号) | 加法运算 | 12 | 数值 | 2 | 数值 | 从左到右 |
-(加号) | 减法运算 | 12 | 数值 | 2 | 数值 | 从左到右 |
+(加号) | 连接字符串 | 12 | 字符串 | 2 | 字符串 | 从左到右 |
<< | 左移位 | 11 | 整数 | 2 | 整数 | 从左到右 |
>> | 有符号右移位 | 11 | 整数 | 2 | 整数 | 从左到右 |
>>> | 无符号右移位 | 11 | 整数 | 2 | 整数 | 从左到右 |
< | 小于(根据数字大小、字符编码表中顺序) | 10 | 数值或字符串 | 2 | 布尔值 | 从左到右 |
<= | 小于等于(根据数字大小、字符编码表中顺序) | 10 | 数值或字符串 | 2 | 布尔值 | 从左到右 |
> | 大于(根据数字大小、字符编码表中顺序) | 10 | 数值或字符串 | 22 | 布尔值 | 从左到右 |
>= | 大于等于(根据数字大小、字符编码表中顺序) | 10 | 数值或字符串 | 2 | 布尔值 | 从左到右 |
instanceof | 检测对象类型 | 10 | 对象 instanceof 构造函数 | 2 | 布尔值 | 从左到右 |
in | 检测属性是否存在 | 10 | 字符串 in 对象 | 2 | 布尔值 | 从左到右 |
== | 相等(值相等) | 9 | 任意 | 2 | 布尔值 | 从左到右 |
!= | 不相等(值不相等) | 9 | 任意 | 2 | 布尔值 | 从左到右 |
=== | 全等(值和类型都相等,或地址相等) | 9 | 任意 | 2 | 布尔值 | 从左到右 |
!= = | 不全等(值或类型不相等,或地址不相等) | 9 | 任意 | 2 | 布尔值 | 从左到右 |
&(连字符) | 按位与 | 8 | 整数 | 2 | 整数 | 从左到右 |
^(顶角符号) | 按位异或 | 7 | 整数 | 2 | 整数 | 从左到右 |
|(竖线符号) | 按位或 | 6 | 整数 | 2 | 整数 | 从左到右 |
&& | 逻辑与 | 5 | 任意 | 2 | 任意 | 从左到右 |
|| | 逻辑或 | 4 | 任意 | 2 | 任意 | 从左到右 |
?: | 条件运算符 | 3 | 布尔值?任意:任意 | 3 | 任意 | 从右到左 |
=(等号) | 赋值 | 2 | 左值=任意 | 2 | 任意 | 从右到左 |
*= | 先乘后赋值 | 2 | 左值*=任意 | 2 | 任意 | 从右到左 |
/= | 先除后赋值 | 2 | 左值/=任意 | 2 | 任意 | 从右到左 |
%= | 先取余后赋值 | 2 | 左值%=任意 | 2 | 任意 | 从右到左 |
+= | 先加后赋值 | 2 | 左值+=任意 | 2 | 任意 | 从右到左 |
-= | 先减后赋值 | 2 | 左值-=任意 | 2 | 任意 | 从右到左 |
<<= | 先左移后赋值 | 2 | 左值<<=任意 | 2 | 任意 | 从右到左 |
>>= | 先有符号右移后赋值 | 2 | 左值>>=任意 | 2 | 任意 | 从右到左 |
>>>= | 先无符号右移后赋值 | 2 | 左值>>>=任意 | 2 | 任意 | 从右到左 |
&= | 先按位与后赋值 | 2 | 左值&=任意 | 2 | 任意 | 从右到左 |
^= | 先按位异或后赋值 | 2 | 左值^=任意 | 2 | 任意 | 从右到左 |
|= | 先按位或后赋值 | 2 | 左值|=任意 | 2 | 任意 | 从右到左 |
,(逗号) | 多重计算,并返回第二个操作数的值 | 1 | 任意 | 2 | 任意 | 从左到右 |