文章目录
- 一、条件分支语句(决策)
-
- [1. if...else if...else(最常用)](#1. if...else if...else(最常用))
- [2. switch...case(多值匹配)](#2. switch...case(多值匹配))
- [3. 三元运算符(? :)](#3. 三元运算符(? :))
- 二、循环语句(迭代)
-
- [1. for 循环(计数循环)](#1. for 循环(计数循环))
- [2. while 循环(条件前置)](#2. while 循环(条件前置))
- [3. do...while 循环(条件后置)](#3. do...while 循环(条件后置))
- [4. for...in(遍历对象的键)](#4. for...in(遍历对象的键))
- [5. for...of(遍历可迭代对象的值)](#5. for...of(遍历可迭代对象的值))
- 三、跳转与异常处理语句
-
- [1. break 和 continue(循环控制)](#1. break 和 continue(循环控制))
- [2. return(函数终止)](#2. return(函数终止))
- [3. try...catch...finally(异常捕获)](#3. try...catch...finally(异常捕获))
- 四、补充:空值合并与可选链(现代控制糖)
JavaScript 的控制语句主要分为三大类:条件分支语句(选择执行)、循环语句(重复执行)和跳转/异常处理语句(改变执行流)。
一、条件分支语句(决策)
根据条件表达式的真假,决定执行哪一段代码。
1. if...else if...else(最常用)
适用于复杂的区间判断或多条件组合。
bash
let score = 85;
if (score >= 90) {
console.log('优秀');
} else if (score >= 60) {
console.log('及格'); // 输出此条
} else {
console.log('不及格');
}
2. switch...case(多值匹配)
适用于变量值严格等于(===)某个固定值的场景。注意:每个 case 后必须加 break,否则会"穿透"继续执行。
bash
let fruit = 'apple';
switch (fruit) {
case 'banana':
console.log('香蕉');
break;
case 'apple':
console.log('苹果'); // 输出此条
break;
default:
console.log('未知水果');
}
3. 三元运算符(? :)
简化的条件赋值,适合单行逻辑。
bash
let age = 20;
let type = age >= 18 ? '成年' : '未成年'; // type = '成年'
二、循环语句(迭代)
重复执行某段代码,直到条件为 false。
1. for 循环(计数循环)
最经典的循环,适合已知循环次数。
bash
for (let i = 0; i < 5; i++) {
console.log(i); // 输出 0, 1, 2, 3, 4
}
2. while 循环(条件前置)
先判断条件,再执行,如果条件一开始为假,则一次都不执行。
bash
let n = 3;
while (n > 0) {
console.log(n); // 输出 3, 2, 1
n--;
}
3. do...while 循环(条件后置)
bash
let x = 0;
do {
console.log(x); // 输出 0(哪怕 x=0 也会执行这一次)
x++;
} while (x < 0);
4. for...in(遍历对象的键)
遍历对象可枚举的属性名(不建议用于遍历数组,会遍历到原型链上的属性)。
bash
let obj = { a: 1, b: 2 };
for (let key in obj) {
console.log(key, obj[key]); // 输出 a 1, b 2
}
5. for...of(遍历可迭代对象的值)
ES6 新增,专门用于遍历数组、字符串、Set、Map 等,直接获取值(推荐用于数组)。
bash
let arr = [10, 20, 30];
for (let value of arr) {
console.log(value); // 输出 10, 20, 30
}
三、跳转与异常处理语句
1. break 和 continue(循环控制)
break:立即终止整个循环(跳出循环体)。
continue:跳过本次循环,立即进入下一次迭代。
bash
for (let i = 0; i < 5; i++) {
if (i === 2) continue; // i=2 时不执行下面,直接 i++
if (i === 4) break; // i=4 时彻底停止循环
console.log(i); // 输出 0, 1, 3
}
2. return(函数终止)
不仅仅用于返回值,它还会立即终止当前函数的执行,后续代码不再运行。
bash
function test() {
return; // 函数在这里结束
console.log('这行永远不会执行');
}
3. try...catch...finally(异常捕获)
用于捕获代码运行时的错误,防止程序崩溃。finally 无论是否发生错误都会执行。
bash
try {
let data = JSON.parse('无效的JSON'); // 这里会抛错
console.log(data);
} catch (error) {
console.log('捕获到错误:', error.message);
} finally {
console.log('清理资源...'); // 无论成功失败都会执行
}
四、补充:空值合并与可选链(现代控制糖)
虽然不算是传统的"语句",但在写条件判断时极其常用:
?.(可选链):判断前面的值是否存在,避免报错 Cannot read properties of undefined。
bash
let user = {};
console.log(user?.address?.city); // 输出 undefined(不报错)
??(空值合并):只有当左侧是 null 或 undefined 时,才返回右侧的值(区别于 || 会把 0 或 '' 也视为假)。
bash
let count = 0;
console.log(count || 10); // 输出 10(因为 0 是假值)
console.log(count ?? 10); // 输出 0(因为 0 不是 null/undefined)