在 JavaScript 中,操作符是一个符号,它对一个或多个操作数(如变量或值)执行某种操作,并返回结果。让我们来看一个简单的表达式 4 + 5 等于 9,在这里 4 和 5 被称为操作数,而‘+’被称为操作符。
JavaScript 支持以下类型的操作符:
我们逐一来看这些操作符。
JavaScript 算术操作符
JavaScript 算术操作符用于对数字执行数学运算,如加法、乘法、减法、除法等。JavaScript 支持以下算术操作符:
操作符 |
描述 |
示例 |
+ (加法) |
将两个操作数相加。 |
如果 x = 10 , y = 20 , 则 x + y 将给出 30 。 |
- (减法) |
从第一个操作数减去第二个操作数。 |
x - y 将给出 -10 。 |
* (乘法) |
将两个操作数相乘。 |
x * y 将给出 200 。 |
/ (除法) |
将分子除以分母。 |
y / x 将给出 2 。 |
% (取模) |
输出整数除法后的余数。 |
y % x 将给出 0 。 |
++ (递增) |
将整数值增加一。 |
x++ 将给出 11 。 |
-- (递减) |
将整数值减少一。 |
x-- 将给出 9 。 |
加法操作符 (+
) 同时适用于数字和字符串。例如 "a" + 10
将给出 "a10"
。
JavaScript 比较操作符
JavaScript 比较操作符比较两个值并返回布尔结果(真或假)。JavaScript 支持以下比较操作符:
操作符 |
描述 |
示例 |
== (等于) |
检查两个操作数的值是否相等。如果相等,则条件变为真。 |
(x == y) 是不真实的。 |
!= (不等于) |
检查两个操作数的值是否相等。如果不相等,则条件变为真。 |
(x != y) 是真实的。 |
=== (严格等于) |
检查变量的值和数据类型是否相等。如果相等,则条件变为真。 |
(x === y) 是不真实的。 |
!== (严格不等于) |
检查变量的值和数据类型是否相等。如果不相等,则条件变为真。 |
(x !== y) 是真实的。 |
> (大于) |
检查左操作数的值是否大于右操作数的值。如果是,则条件变为真。 |
(x > y) 是不真实的。 |
< (小于) |
检查左操作数的值是否小于右操作数的值。如果是,则条件变为真。 |
(x < y) 是真实的。 |
>= (大于等于) |
检查左操作数的值是否大于或等于右操作数的值。如果是,则条件变为真。 |
(x >= y) 是不真实的。 |
<= (小于等于) |
检查左操作数的值是否小于或等于右操作数的值。如果是,则条件变为真。 |
(x <= y) 是真实的。 |
JavaScript 逻辑操作符
逻辑操作符通常用于对布尔值执行逻辑运算。但是逻辑操作符可以应用于任何类型的值而不只是布尔值。
JavaScript 支持以下逻辑操作符:
操作符 |
描述 |
示例 |
&& (逻辑与) |
如果两个操作数都非零,则条件变为真。 |
如果 x = 10 且 y = 0 ,则 (x && y) 是假的。 |
` |
|
` (逻辑或) |
! (逻辑非) |
反转其操作数的逻辑状态。如果一个条件是真的,那么逻辑非操作符将使其为假。 |
!x 是假的。 |
JavaScript 位操作符
JavaScript 位操作符用于对整数执行位级运算。JavaScript 支持以下七种类型的位操作符:
操作符 |
描述 |
示例 |
& (位与) |
在每个位上对其整数参数执行布尔与运算。 |
如果 x = 2 且 y = 3 ,则 (x & y) 是 2 。 |
` |
` (位或) |
在每个位上对其整数参数执行布尔或运算。 |
^ (位异或) |
在每个位上对其整数参数执行布尔异或运算。异或意味着要么操作数一是真的,要么操作数二是真的,但不是两者同时。 |
(x ^ y) 是 1 。 |
~ (位非) |
它是一个一元操作符,通过反转所有操作数中的位来操作。 |
(~y) 是 -4 。 |
<< (左移) |
将其第一个操作数的所有位向左移动由第二个操作数指定的数量的位置。新位填充为零。将一个值左移一位相当于将其乘以 2,左移两位相当于乘以 4,以此类推。 |
(x << 1) 是 4 。 |
>> (右移) |
二进制右移操作符。左操作数的值向右移动由右操作数指定数量的位。 |
(x >> 1) 是 1 。 |
>>> (无符号右移) |
此操作符类似于 >> 操作符,不同之处在于从左边移入的位总是零。 |
(x >>> 1) 是 1 。 |
JavaScript 赋值操作符
在 JavaScript 中,赋值操作符用于给变量赋值。JavaScript 支持以下赋值操作符:
操作符 |
描述 |
示例 |
= (简单赋值) |
将右侧操作数的值赋给左侧操作数。 |
z = x + y 将把 x + y 的值赋给 z 。 |
+= (加和赋值) |
将右操作数加到左操作数并将结果赋给左操作数。 |
z += x 等价于 z = z + x 。 |
-= (减和赋值) |
将右操作数从左操作数中减去并将结果赋给左操作数。 |
z -= x 等价于 z = z - x 。 |
*= (乘和赋值) |
将右操作数与左操作数相乘并将结果赋给左操作数。 |
z *= x 等价于 z = z * x 。 |
/= (除和赋值) |
将左操作数除以右操作数并将结果赋给左操作数。 |
z /= x 等价于 z = z / x 。 |
%= (取模和赋值) |
使用两个操作数进行取模运算并将结果赋给左操作数。 |
z %= x 等价于 z = z % x 。 |
同样的逻辑也适用于位操作符,所以它们会变成像 <<=
、>>=
、>>>=
、&=
、|=
和 ^=
。
JavaScript 其他操作符
JavaScript 还支持一些其他操作符。这些操作符包括条件操作符 (? :
)、typeof
操作符、delete
操作符等。
在下表中,我们给出了 JavaScript 的其他操作符及其解释:
操作符 |
描述 |
? : (条件) |
如果条件为真?则值 X :否则值 Y |
typeof |
返回操作数的数据类型。 |
?? (空值合并操作符) |
当其左操作数为 null 或 undefined 时返回其右手边操作数,否则返回其左手边操作数。 |
delete |
从对象中移除一个属性。 |
, (逗号) |
从左到右评估其操作数并返回最后一个操作数的值。 |
() (分组) |
允许改变运算符优先级。 |
yield |
用于暂停和恢复一个生成器函数。 |
... (扩展) |
用于扩展诸如数组或字符串这样的可迭代项。 |
** (指数) |
将左操作数提升到右操作数的幂。 |