1.5 运算符
运算符就是用来做运算的符号,就像数学课上的 +、-、*、/。
JavaScript 中常见的运算符分为:算术运算符、赋值运算符、比较运算符、逻辑运算符。
1.5.1 算术运算符
算术运算符用于执行数学运算:
算术运算符表:
| 运算符 | 含义 | 示例 | 结果 |
|---|---|---|---|
+ |
加法 | 10 + 3 |
13 |
- |
减法 | 10 - 3 |
7 |
* |
乘法 | 10 * 3 |
30 |
/ |
除法 | 10 / 3 |
3.333... |
% |
取余(求模) | 10 % 3 |
1(10÷3余1) |
交互演示 —— 算术计算器:
等待计算...
1let a = 10;
2let b = 3;
3
4console.log(a + b); // 13
5console.log(a - b); // 7
6console.log(a * b); // 30
7console.log(a / b); // 3.3333333333333335
8console.log(a % b); // 1(10 ÷ 3 = 3 余 1)
9
10// 取余的实际用途:判断奇偶数
11let num = 7;
12console.log(num % 2); // 1(奇数),如果结果是0就是偶数
1.5.2 赋值运算符
赋值运算符用于给变量赋值:
赋值运算符表:
| 运算符 | 示例 | 等价于 | 结果 |
|---|---|---|---|
= |
x = 5 |
把5赋给x | x = 5 |
+= |
x += 3 |
x = x + 3 |
x = 8 |
-= |
x -= 3 |
x = x - 3 |
x = 2 |
*= |
x *= 3 |
x = x * 3 |
x = 15 |
/= |
x /= 3 |
x = x / 3 |
x = 1.666... |
提示:
自增自减:++ 和 -- 是加1和减1的简写。
let n = 5;
n++; // n = n + 1 → 6
n--; // n = n - 1 → 5
1let score = 10;
2score += 5; // score = score + 5 → 15
3score -= 3; // score = score - 3 → 12
4score *= 2; // score = score * 2 → 24
5score /= 4; // score = score / 4 → 6
6console.log(score); // 6
1.5.3 比较运算符
比较运算符的结果是布尔值(true 或 false)。
⚠️ 永远用 === 代替 ==。== 会做类型转换,'5' == 5 是 true,容易埋坑。
比较运算符表:
| 运算符 | 含义 | 示例 | 结果 |
|---|---|---|---|
> |
大于 | 5 > 3 |
true |
< |
小于 | 5 < 3 |
false |
>= |
大于等于 | 5 >= 5 |
true |
<= |
小于等于 | 5 <= 4 |
false |
== |
相等(只比较值) | '5' == 5 |
true |
=== |
全等(比较值和类型) | '5' === 5 |
false |
!= |
不相等 | '5' != 5 |
false |
!== |
不全等 | '5' !== 5 |
true |
交互演示 —— 比较运算:
等待比较...
1let age = 18;
2
3console.log(age > 18); // false(不大于)
4console.log(age >= 18); // true(等于)
5console.log(age < 20); // true
6console.log(age == '18'); // true(==只比较值,'18'转成18)
7console.log(age === '18'); // false(===比较值和类型,数字18≠字符串'18')
8console.log(age !== '18'); // true(确实不全等)
1.5.4 逻辑运算符
逻辑运算符用来组合多个条件。
逻辑运算符表:
| 运算符 | 名称 | 大白话 | 示例 | 结果 |
|---|---|---|---|---|
&& |
与(且) | 两个条件都成立才真 | true && false |
false |
|| |
或 | 有一个成立就真 | true || false |
true |
! |
非(取反) | 真变假,假变真 | !true |
false |
短路特性:
&& 短路:左边是 false,右边就不执行了
|| 短路:左边是 true,右边就不执行了
// && 短路:左边是 false,右边就不执行了
let a = 0 && console.log('不会执行');
// || 短路:左边是 true,右边就不执行了
let b = 1 || console.log('不会执行');
💡 记忆口诀:&& 找假——找到假就停;|| 找真——找到真就停。
运算符优先级(从高到低):
let result = 5 + 3 * 2 > 10 && true;
// 1. 3 * 2 = 6
// 2. 5 + 6 = 11
// 3. 11 > 10 = true
// 4. true && true = true
console.log(result); // true
💡 记不住优先级没关系,多用小括号 (),括号里的先算,清晰又安全。
1let age = 20;
2let hasID = true;
3
4// &&:两个都满足才能进
5console.log(age >= 18 && hasID); // true
6
7// ||:满足一个就行
8console.log(age >= 18 || hasID); // true
9
10// !:取反
11console.log(!hasID); // false
12
13// 实际应用:判断是否可购买酒类
14let isAdult = age >= 18; // true
15let notDrunk = true; // 没喝醉
16console.log(isAdult && notDrunk); // true
1.6 分支语句
程序不是总从上到下跑,有时候要根据条件选择走哪条路。分支语句就是"十字路口"。
1.6.1 if 语句 —— 基本语法:
if (条件) {
// 条件为 true 时执行的代码
}
if (条件) {
// 条件为 true 时执行
} else {
// 条件为 false 时执行
}
if (条件1) {
// 条件1为 true 时执行
} else if (条件2) {
// 条件1不成立且条件2成立时执行
} else {
// 以上都不成立时执行
}
1.6.2 switch 语句 —— 基本语法:
switch (变量) {
case 值1:
// 代码
break;
case 值2:
// 代码
break;
default:
// 都不匹配时执行的代码
}
⚠️ 新手易错:case 后面必须加 break,否则会继续往下执行后面的 case("穿透")。
交互演示 —— if/switch 成绩等级计算器:
等待输入分数...
1// if-else-if 成绩判断
2let score = 85;
3
4if (score >= 90) {
5 console.log('优秀');
6} else if (score >= 80) {
7 console.log('良好');
8} else if (score >= 60) {
9 console.log('及格');
10} else {
11 console.log('不及格');
12}
13// 输出:良好
14
15// switch 星期判断
16let weekday = 3;
17let dayName;
18
19switch (weekday) {
20 case 1: dayName = '星期一'; break;
21 case 2: dayName = '星期二'; break;
22 case 3: dayName = '星期三'; break;
23 case 4: dayName = '星期四'; break;
24 case 5: dayName = '星期五'; break;
25 default: dayName = '周末';
26}
27console.log('今天是' + dayName); // 今天是星期三
1.7 循环语句
循环就是让一段代码反复执行,直到某个条件不满足为止。好比"没吃完就继续吃,吃饱了就停"。
三种循环语法对比:
| 循环 | 语法 | 特点 | 使用场景 |
|---|---|---|---|
for |
for (初始化; 条件; 步进) { ... } |
初始化、条件、步进写在一起 | 知道循环次数时首选 |
while |
while (条件) { ... } |
只有条件 | 不知道具体次数,只知道什么时候停 |
do-while |
do { ... } while (条件); |
至少执行一次 | 至少需要执行一次的场景 |
for 循环 —— 代码逐行讲解:
| 部分 | 代码 | 说明 |
|---|---|---|
| 初始化 | let i = 1 |
先执行一次,声明循环变量 i 从 1 开始 |
| 条件 | i <= 5 |
每次循环前检查,true 就继续,false 就停 |
| 步进 | i++ |
每次循环后执行,i 加 1 |
| 循环体 | console.log(...) |
条件成立时执行的内容 |
执行过程:i=1 → 检查 1<=5 ✅ → 输出 → i=2 → …… → i=6 → 检查 6<=5 ❌ → 结束。
while 循环提示:
⚠️ 新手易错:while 循环里一定要有改变条件的语句(比如 i++),否则条件永远成立,变成死循环,浏览器会卡死!
do-while 循环特点:
do-while 和 while 的区别是:不管条件成不成立,先执行一次再说。
let i = 10;
do {
console.log('当前数字:' + i);
i++;
} while (i <= 5);
// 输出:当前数字:10
// 虽然 10 > 5 条件不成立,但还是执行了一次
break 和 continue:
// break:跳出整个循环
for (let i = 1; i <= 10; i++) {
if (i === 5) {
break; // i 等于 5 时跳出,循环结束
}
console.log(i); // 输出:1 2 3 4
}
// continue:跳过本次循环,继续下一次
for (let i = 1; i <= 5; i++) {
if (i === 3) {
continue; // i 等于 3 时跳过,不输出
}
console.log(i); // 输出:1 2 4 5
}
💡 break = 直接跑路(整个循环结束);continue = 跳过这次(继续下一次)。
交互演示 —— 循环输出展示:
点击按钮查看循环输出...
1// for 循环:从1数到5
2for (let i = 1; i <= 5; i++) {
3 console.log('第' + i + '次循环');
4}
5
6// while 循环
7let i = 1;
8while (i <= 5) {
9 console.log('当前数字:' + i);
10 i++;
11}
12
13// do-while 循环
14let j = 10;
15do {
16 console.log('当前数字:' + j);
17 j++;
18} while (j <= 5);
19
20// break:跳出整个循环
21for (let i = 1; i <= 10; i++) {
22 if (i === 5) break;
23 console.log(i); // 1 2 3 4
24}
25
26// continue:跳过本次循环
27for (let i = 1; i <= 5; i++) {
28 if (i === 3) continue;
29 console.log(i); // 1 2 4 5
30}