JavaScript 提供了多种运算符来处理不同类型的操作,包括算术运算、赋值、比较、逻辑运算等。运算符的优先级决定了在没有括号的情况下,哪个运算符会先被计算。
算术运算符
- 加法 (
+
) - 减法 (
-
) - 乘法 (
*
) - 除法 (
/
) - 取余 (
%
) - 指数 (
**
)
示例:
javascript">let result = 2 + 3 * 4; // 14, 因为乘法优先于加法
赋值运算符
- 简单赋值 (
=
) - 加法赋值 (
+=
) - 减法赋值 (
-=
) - 乘法赋值 (
*=
) - 除法赋值 (
/=
) - 取余赋值 (
%=
)
示例:
javascript">let a = 5;
a += 3; // 等同于 a = a + 3, a 现在是 8
比较运算符
- 等于 (
==
) - 不等于 (
!=
) - 严格等于 (
===
) - 严格不等于 (
!==
) - 大于 (
>
) - 小于 (
<
) - 大于等于 (
>=
) - 小于等于 (
<=
)
示例:
javascript">let a = 5;
let b = '5';
console.log(a == b); // true, 类型转换后相等
console.log(a === b); // false, 类型不同
逻辑运算符
- 逻辑与 (
&&
) - 逻辑或 (
||
) - 逻辑非 (
!
)
示例:
javascript">let a = true;
let b = false;
console.log(a && b); // false
console.log(a || b); // true
console.log(!a); // false
位运算符
- 按位与 (
&
) - 按位或 (
|
) - 按位异或 (
^
) - 按位非 (
~
) - 左移 (
<<
) - 有符号右移 (
>>
) - 无符号右移 (
>>>
)
示例:
javascript">let a = 5; // 二进制: 0101
let b = 3; // 二进制: 0011
console.log(a & b); // 1 (0001)
其他运算符
- 条件运算符 (
?:
) - 类型运算符 (
typeof
,instanceof
,in
,delete
) - 逗号运算符 (
,
)
示例:
javascript">let isEven = (num) => num % 2 === 0 ? 'Even' : 'Odd';
console.log(isEven(4)); // Even
运算符优先级
运算符优先级决定了在没有括号的情况下,哪些运算会先被计算。以下是一些常见的运算符优先级,从高到低排列:
- 成员访问 (
.
)、数组下标 ([]
)、函数调用 (()
)、new
- 后置递增/递减 (
x++
,x--
) - 逻辑非 (
!
)、按位非 (~
)、一元加号 (+x
)、一元减号 (-x
)、递增 (++x
)、递减 (--x
)、typeof
、void
、delete
- 乘法 (
*
)、除法 (/
)、取余 (%
) - 加法 (
+
)、减法 (-
) - 位移运算符 (
<<
,>>
,>>>
) - 比较运算符 (
<
,<=
,>
,>=
,in
,instanceof
,==
,!=
,===
,!==
) - 按位与 (
&
) - 按位异或 (
^
) - 按位或 (
|
) - 逻辑与 (
&&
) - 逻辑或 (
||
) - 条件运算符 (
?:
) - 赋值运算符 (
=
,+=
,-=
,*=
,/=
,%=
,<<=
,>>=
,>>>=
,&=
,^=
,|=
) - 逗号运算符 (
,
)
示例:
javascript">let result = 1 + 2 * 3 - 4 / 2; // 7, 因为乘法 (2 * 3) 和除法 (4 / 2) 优先于加法和减法