名字
|
简写的操作符
|
含义
|
x = y
|
x = y
|
|
x += y
|
x = x + y
|
|
x -= y
|
x = x - y
|
|
x *= y
|
x = x * y
|
|
x /= y
|
x = x / y
|
|
x %= y
|
x = x % y
|
|
x **= y
|
x = x ** y
|
|
x <<= y
|
x = x << y
|
|
x >>= y
|
x = x >> y
|
|
x >>>= y
|
x = x >>> y
|
|
x &= y
|
x = x & y
|
|
x ^= y
|
x = x ^ y
|
|
x |= y
|
x = x | y
|
运算符
|
描述
|
返回true的示例
|
相等 Equal (==)
|
如果两边操作数相等时返回true。
|
3 == var1
"3" == var1
3 == '3'
|
不等于 Not equal (!=)
|
如果两边操作数不相等时返回true
|
var1 != 4
var2 != "3"
|
全等 Strict equal (===)
|
两边操作数相等且类型相同时返回true。
|
3 === var1
|
不全等 Strict not equal (!==)
|
两边操作数不相等或类型不同时返回true。
|
var1 !== "3"
3 !== '3'
|
大于 Greater than (>)
|
左边的操作数大于右边的操作数返回true
|
var2 > var1
"12" > 2
|
左边的操作数大于或等于右边的操作数返回true
|
var2 >= var1
var1 >= 3
|
|
小于 Less than (<)
|
左边的操作数小于右边的操作数返回true
|
var1 < var2
"2" < 12
|
左边的操作数小于或等于右边的操作数返回true
|
var1 <= var2
var2 <= 5
|
算符
|
描述
|
例子
|
x 运算结果
|
y 运算结果
|
+
|
加法
|
x=y+2
|
7
|
5
|
-
|
减法
|
x=y-2
|
3
|
5
|
*
|
乘法
|
x=y*2
|
10
|
5
|
/
|
除法
|
x=y/2
|
2.5
|
5
|
%
|
取模(余数)
|
x=y%2
|
1
|
5
|
++
|
自增(i++,先赋值,后
|
x=++y
|
6
|
6
|
|
加加;++i,先加加,后赋值)
|
x=y++
|
5
|
6
|
--
|
自减
|
x=--y
|
4
|
4
|
|
|
x=y--
|
5
|
4
|
一元负值符(-)
|
一元运算符,返回操作数的负值.
|
var x=3; console.log(-x); //输入-3
|
一元正值符(+)
|
一元运算符, 如果操作数在之前不是number,试图将其转换为number
|
console.log( +'3' ); // 3
|
console.log( '3' ); // '3'
|
||
console.log(+true); // 1
|
||
指数运算符(**)
|
计算 base(底数) 的 exponent(指数)次方, 表示为baseexponent
|
2 ** 3 returns 8.
|
10 ** -1 returns 0.1.
|
运算符
|
范例
|
描述
|
逻辑与 (&&)
|
expr1 && expr2
|
(逻辑与) 如果expr1能被转换为false,那么返回expr1;否则,返回expr2。因此,&&用于布尔值时,当操作数都为true时返回true;否则返回false.
|
逻辑或 (||)
|
expr1 || expr2
|
(逻辑或) 如果expr1能被转换为true,那么返回expr1;否则,返回expr2。因此,||用于布尔值时,当任何一个操作数为true则返回true;如果操作数都是false则返回false。
|
逻辑非 (!)
|
!expr
|
(逻辑非) 如果操作数能够转换为true则返回false;否则返回true。
|
Operator
|
Usage
|
Description
|
按位与 AND
|
a & b
|
在a,b的位表示中,每一个对应的位都为1则返回1, 否则返回0.
|
按位或 OR
|
a | b
|
在a,b的位表示中,每一个对应的位,只要有一个为1则返回1, 否则返回0.
|
按位异或 XOR
|
a ^ b
|
在a,b的位表示中,每一个对应的位,两个不相同则返回1,相同则返回0.
|
按位非 NOT
|
~ a
|
反转被操作数的位。
|
左移 shift
|
a << b
|
将a的二进制串向左移动b位,右边移入0.
|
算术右移
|
a >> b
|
把a的二进制表示向右移动b位,丢弃被移出的所有位.(译注:算术右移左边空出的位是根据最高位是0和1来进行填充的)
|
无符号右移
(左边空出位用0填充)
|
a >>> b
|
把a的二进制表示向右移动b位,丢弃被移出的所有位,并把左边空出的位都填充为0
|
表达式
|
结果
|
二进制描述
|
15 & 9
|
9
|
1111 & 1001 = 1001
|
15 | 9
|
15
|
1111 | 1001 = 1111
|
15 ^ 9
|
6
|
1111 ^ 1001 = 0110
|
~15
|
-16
|
~00000000...00001111 = 11111111...11110000
|
~9
|
-10
|
~00000000...00001001 = 11111111...11110110
|
运算符
|
描述
|
范例
|
<<(左移位)
|
将第一个操作数向左移动指定数量的位. 左边移出位被抛弃. 左边移出的几位被丢弃.右边多出的空位由0补齐
|
9<<2产生36,因为1001移位2比特向左变为100100,它是36。
|
>>(带符号右移)
|
将第一个操作数向右移动指定数量的位. 右边移出位被抛弃. 左边多出的空位由原值的最左边数字补齐.
|
9>>2产生2,因为1001移位2位向右变为10,其是2。同样,-9>>2产生-3,由于符号被保留。
|
>>>(补零右移)
|
将第一个操作数向右移动指定数量的位. 右边移出位被抛弃. 左边多出的空位由0补齐.
|
19>>>2产生4,因为10011移位2位向右变为100,它是4。对非负数值,补零右移和带符号右移产生相同结果。
|
Operator type
|
Individual operators
|
member
|
. []
|
call / create instance
|
() new
|
negation/increment
|
! ~ - + ++ -- typeof void delete
|
multiply/divide
|
* / %
|
addition/subtraction
|
+ -
|
bitwise shift
|
<< >> >>>
|
relational
|
< <= > >= in instanceof
|
equality
|
== != === !==
|
bitwise-and
|
&
|
bitwise-xor
|
^
|
bitwise-or
|
|
|
logical-and
|
&&
|
logical-or
|
||
|
conditional
|
?:
|
assignment
|
= += -= *= /= %= <<= >>= >>>= &= ^= |=
|
comma
|
,
|
名字
|
简写的操作符
|
含义
|
x = y
|
x = y
|
|
x += y
|
x = x + y
|
|
x -= y
|
x = x - y
|
|
x *= y
|
x = x * y
|
|
x /= y
|
x = x / y
|
|
x %= y
|
x = x % y
|
|
x **= y
|
x = x ** y
|
|
x <<= y
|
x = x << y
|
|
x >>= y
|
x = x >> y
|
|
x >>>= y
|
x = x >>> y
|
|
x &= y
|
x = x & y
|
|
x ^= y
|
x = x ^ y
|
|
x |= y
|
x = x | y
|
运算符
|
描述
|
返回true的示例
|
相等 Equal (==)
|
如果两边操作数相等时返回true。
|
3 == var1
"3" == var1
3 == '3'
|
不等于 Not equal (!=)
|
如果两边操作数不相等时返回true
|
var1 != 4
var2 != "3"
|
全等 Strict equal (===)
|
两边操作数相等且类型相同时返回true。
|
3 === var1
|
不全等 Strict not equal (!==)
|
两边操作数不相等或类型不同时返回true。
|
var1 !== "3"
3 !== '3'
|
大于 Greater than (>)
|
左边的操作数大于右边的操作数返回true
|
var2 > var1
"12" > 2
|
左边的操作数大于或等于右边的操作数返回true
|
var2 >= var1
var1 >= 3
|
|
小于 Less than (<)
|
左边的操作数小于右边的操作数返回true
|
var1 < var2
"2" < 12
|
左边的操作数小于或等于右边的操作数返回true
|
var1 <= var2
var2 <= 5
|
算符
|
描述
|
例子
|
x 运算结果
|
y 运算结果
|
+
|
加法
|
x=y+2
|
7
|
5
|
-
|
减法
|
x=y-2
|
3
|
5
|
*
|
乘法
|
x=y*2
|
10
|
5
|
/
|
除法
|
x=y/2
|
2.5
|
5
|
%
|
取模(余数)
|
x=y%2
|
1
|
5
|
++
|
自增(i++,先赋值,后
|
x=++y
|
6
|
6
|
|
加加;++i,先加加,后赋值)
|
x=y++
|
5
|
6
|
--
|
自减
|
x=--y
|
4
|
4
|
|
|
x=y--
|
5
|
4
|
一元负值符(-)
|
一元运算符,返回操作数的负值.
|
var x=3; console.log(-x); //输入-3
|
一元正值符(+)
|
一元运算符, 如果操作数在之前不是number,试图将其转换为number
|
console.log( +'3' ); // 3
|
console.log( '3' ); // '3'
|
||
console.log(+true); // 1
|
||
指数运算符(**)
|
计算 base(底数) 的 exponent(指数)次方, 表示为baseexponent
|
2 ** 3 returns 8.
|
10 ** -1 returns 0.1.
|
运算符
|
范例
|
描述
|
逻辑与 (&&)
|
expr1 && expr2
|
(逻辑与) 如果expr1能被转换为false,那么返回expr1;否则,返回expr2。因此,&&用于布尔值时,当操作数都为true时返回true;否则返回false.
|
逻辑或 (||)
|
expr1 || expr2
|
(逻辑或) 如果expr1能被转换为true,那么返回expr1;否则,返回expr2。因此,||用于布尔值时,当任何一个操作数为true则返回true;如果操作数都是false则返回false。
|
逻辑非 (!)
|
!expr
|
(逻辑非) 如果操作数能够转换为true则返回false;否则返回true。
|
Operator
|
Usage
|
Description
|
按位与 AND
|
a & b
|
在a,b的位表示中,每一个对应的位都为1则返回1, 否则返回0.
|
按位或 OR
|
a | b
|
在a,b的位表示中,每一个对应的位,只要有一个为1则返回1, 否则返回0.
|
按位异或 XOR
|
a ^ b
|
在a,b的位表示中,每一个对应的位,两个不相同则返回1,相同则返回0.
|
按位非 NOT
|
~ a
|
反转被操作数的位。
|
左移 shift
|
a << b
|
将a的二进制串向左移动b位,右边移入0.
|
算术右移
|
a >> b
|
把a的二进制表示向右移动b位,丢弃被移出的所有位.(译注:算术右移左边空出的位是根据最高位是0和1来进行填充的)
|
无符号右移
(左边空出位用0填充)
|
a >>> b
|
把a的二进制表示向右移动b位,丢弃被移出的所有位,并把左边空出的位都填充为0
|
表达式
|
结果
|
二进制描述
|
15 & 9
|
9
|
1111 & 1001 = 1001
|
15 | 9
|
15
|
1111 | 1001 = 1111
|
15 ^ 9
|
6
|
1111 ^ 1001 = 0110
|
~15
|
-16
|
~00000000...00001111 = 11111111...11110000
|
~9
|
-10
|
~00000000...00001001 = 11111111...11110110
|
运算符
|
描述
|
范例
|
<<(左移位)
|
将第一个操作数向左移动指定数量的位. 左边移出位被抛弃. 左边移出的几位被丢弃.右边多出的空位由0补齐
|
9<<2产生36,因为1001移位2比特向左变为100100,它是36。
|
>>(带符号右移)
|
将第一个操作数向右移动指定数量的位. 右边移出位被抛弃. 左边多出的空位由原值的最左边数字补齐.
|
9>>2产生2,因为1001移位2位向右变为10,其是2。同样,-9>>2产生-3,由于符号被保留。
|
>>>(补零右移)
|
将第一个操作数向右移动指定数量的位. 右边移出位被抛弃. 左边多出的空位由0补齐.
|
19>>>2产生4,因为10011移位2位向右变为100,它是4。对非负数值,补零右移和带符号右移产生相同结果。
|
Operator type
|
Individual operators
|
member
|
. []
|
call / create instance
|
() new
|
negation/increment
|
! ~ - + ++ -- typeof void delete
|
multiply/divide
|
* / %
|
addition/subtraction
|
+ -
|
bitwise shift
|
<< >> >>>
|
relational
|
< <= > >= in instanceof
|
equality
|
== != === !==
|
bitwise-and
|
&
|
bitwise-xor
|
^
|
bitwise-or
|
|
|
logical-and
|
&&
|
logical-or
|
||
|
conditional
|
?:
|
assignment
|
= += -= *= /= %= <<= >>= >>>= &= ^= |=
|
comma
|
,
|