算术运算符
用于数学计算,返回数值结果。
| 运算符 | 描述 | 示例 |
|---|---|---|
+ |
加法 | 5 + 3 → 8 |
- |
减法 | 10 - 4 → 6 |
* |
乘法 | 2 * 6 → 12 |
/ |
除法 | 15 / 3 → 5 |
% |
取模(余数) | 10 % 3 → 1 |
** |
指数(ES6) | 2 ** 4 → 16 |
++ |
自增 | let a=5; a++ → 6 |
-- |
自减 | let b=8; b-- → 7 |
注意:
-
++a(前置)与a++(后置)的区别:
let x = 5;console.log(x++); // 输出5,之后x变为6console.log(++x); // 输出7(x先变为6,再自增到7)
赋值运算符
为变量分配值,可结合算术运算。
| 运算符 | 示例 | 等价于 |
|---|---|---|
= |
x = 10 |
- |
+= |
x += 5 |
x = x + 5 |
-= |
x -= 3 |
x = x - 3 |
*= |
x *= 2 |
x = x * 2 |
/= |
x /= 4 |
x = x / 4 |
%= |
x %= 3 |
x = x % 3 |
**= |
x **= 2 |
x = x ** 2 |
比较运算符
返回布尔值(true/false)。
| 运算符 | 描述 | 示例 |
|---|---|---|
== |
松散相等(自动类型转换) | 5 == "5" → true |
=== |
严格相等(值和类型均相同) | 5 === "5" → false |
!= |
松散不等 | 5 != "6" → true |
!== |
严格不等 | 5 !== "5" → true |
> |
大于 | 10 > 6 → true |
< |
小于 | 3 < 2 → false |
>= |
大于等于 | 7 >= 7 → true |
<= |
小于等于 | 5 <= 3 → false |
建议:始终优先使用 === 和 !== 避免隐式类型转换错误。
逻辑运算符
处理布尔逻辑,支持短路求值。
| 运算符 | 描述 | 示例 |
|---|---|---|
&& |
逻辑与(全部为真) | true && false → false |
| || | 逻辑或(任一为真) | true || false → true |
! |
逻辑非 | !true → false |
短路求值特性:
// &&:遇到假值立即返回false && console.log("不会执行");// ||:遇到真值立即返回true || console.log("不会执行");
位运算符(二进制操作)
直接操作二进制位。
| 运算符 | 描述 | 示例 | |||
|---|---|---|---|---|---|
& |
按位与 | 5 & 1 → 1 (0101 & 0001) |
|||
| ` | ` | 按位或 | `5 | 1 → 5` (0101 | 0001) |
^ |
按位异或 | 5 ^ 1 → 4 (0101 ^ 0001) |
|||
~ |
按位非 | ~5 → -6 |
|||
<< |
左移 | 5 << 1 → 10 |
|||
>> |
右移 | 5 >> 1 → 2 |
|||
>>> |
无符号右移 | -5 >>> 1 → 2147483645 |
其他运算符
1. 条件(三元)运算符
const status = age >= 18 ? "成年" : "未成年";
2. 类型运算符
typeof: 检测变量类型
typeof "Hello" → "string"typeof null → "object" (历史遗留问题)
instanceof: 检测对象类型
[] instanceof Array → true
3. 逗号运算符
按顺序执行表达式,返回最后一个结果:
let a = (1 + 2, 3 + 4); // a = 7
4. delete 运算符
删除对象属性或数组元素:
const obj = { x: 1 };delete obj.x; // obj变为 {}
5. void 运算符
执行表达式并返回 undefined:
<a href="javascript:void(0)">点击不跳转</a>
注意事项和常见错误
1. + 运算符的类型转换
5 + "5" → "55" // 数字转字符串5 + true → 6 // true转为15 + null → 5 // null转为0
2. NaN 的特殊性
NaN === NaN → false // 判断NaN需用 isNaN()0 / 0 → NaN // 无效运算返回NaN
3. 浮点数精度问题
0.1 + 0.2 → 0.30000000000000004 // 使用toFixed()处理显示
4. 对象比较的陷阱
{} === {} → false // 对象比较的是内存地址
总结
掌握JavaScript运算符需注意:
-
严格相等:优先使用
===代替== -
短路运算:利用
&&和||简化条件判断 -
类型转换:注意隐式转换带来的意外结果
-
优先级规则:复杂表达式建议用
()明确优先级
![]() |
Austin Liu 刘恒辉
Project Manager and Software Designer E-Mail:lzhdim@163.com Blog:https://lzhdim.cnblogs.com 欢迎收藏和转载此博客中的博文,但是请注明出处,给笔者一个与大家交流的空间。谢谢大家。 |




浙公网安备 33010602011771号