JavaScript 的控制语句介绍

文章目录

  • 一、条件分支语句(决策)
    • [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)
相关推荐
RSTJ_16251 小时前
PYTHON+AI LLM DAY ONE HUNDRED AND THREE
开发语言·人工智能·python
用户44014549314192 小时前
Spring Boot 3.x 异步编程实战:从 @Async 到虚拟线程
javascript
charlie1145141912 小时前
RK3506B: buildroot:出一份正规的最小 rootfs
开发语言·嵌入式·开源项目·rk3506b
Byron Loong3 小时前
【c#】Bitmap释放之 大象与蚊子
开发语言·c#
音符犹如代码3 小时前
Java动态线程池:避坑原生线程池,吃透Dynamic-TP,手写一个Demo
java·开发语言
喜欢就别3 小时前
平均风险:Rényi DP 和零集中 DP
开发语言·r语言
wangruofeng3 小时前
终端里 rm 一下文件就没了,macOS 怎么删文件才进废纸篓
javascript·命令行·apple
小妖6663 小时前
React input 输入卡顿问题
前端·javascript·react.js
无足鸟ICT3 小时前
【RHCA+】bash命令
linux·开发语言·bash