JavaScript 中的流程控制语句详解

流程控制语句是编程语言中用于控制程序执行流程的结构。JavaScript 提供了多种流程控制语句,可以分为以下几类:

1. 条件语句

1.1 if 语句

最基本的条件判断结构:

if (condition) {
    // 当条件为真时执行的代码
}

1.2 if...else 语句

if (condition) {
    // 当条件为真时执行的代码
} else {
    // 当条件为假时执行的代码
}

1.3 if...else if...else 语句

多条件判断:

if (condition1) {
    // 当condition1为真时执行
} else if (condition2) {
    // 当condition2为真时执行
} else {
    // 当所有条件都为假时执行
}

1.4 三元运算符 (?:)

简洁的条件表达式:

let result = condition ? value1 : value2;

1.5 switch 语句

多分支选择结构:

switch (expression) {
    case value1:
        // 当expression等于value1时执行
        break;
    case value2:
        // 当expression等于value2时执行
        break;
    default:
        // 当没有匹配的case时执行
}

注意:每个case后面通常需要加break,否则会继续执行下一个case(称为"fall-through")。

2. 循环语句

2.1 for 循环

for (initialization; condition; finalExpression) {
    // 循环体
}

示例:

for (let i = 0; i < 5; i++) {
    console.log(i);
}

2.2 while 循环

先判断条件,再执行循环体:

while (condition) {
    // 循环体
}

2.3 do...while 循环

先执行一次循环体,再判断条件:

do {
    // 循环体
} while (condition);

2.4 for...in 循环

遍历对象的可枚举属性:

for (let key in object) {
    // 使用object[key]访问属性值
}

2.5 for...of 循环 (ES6)

遍历可迭代对象(如数组、字符串、Map、Set等)的值:

for (let value of iterable) {
    // 使用value
}

3. 跳转语句

3.1 break 语句

立即退出循环或switch语句:

while (true) {
    if (someCondition) {
        break; // 退出循环
    }
}

3.2 continue 语句

跳过当前循环迭代,进入下一次迭代:

for (let i = 0; i < 10; i++) {
    if (i % 2 === 0) {
        continue; // 跳过偶数
    }
    console.log(i); // 只打印奇数
}

3.3 return 语句

从函数中返回值并退出函数:

function sum(a, b) {
    return a + b;
}

3.4 throw 语句

抛出异常:

if (errorCondition) {
    throw new Error('Something went wrong');
}

3.5 try...catch...finally 语句

异常处理:

try {
    // 可能出错的代码
} catch (error) {
    // 出错时执行的代码
    console.error(error);
} finally {
    // 无论是否出错都会执行的代码
}

4. 标签语句

可以与break和continue配合使用,用于跳出多层循环:

outerLoop: for (let i = 0; i < 3; i++) {
    innerLoop: for (let j = 0; j < 3; j++) {
        if (i === 1 && j === 1) {
            break outerLoop; // 直接跳出外层循环
        }
        console.log(`i=${i}, j=${j}`);
    }
}

5. 现代JavaScript中的流程控制

5.1 可选链操作符 (?. - ES2020)

安全访问嵌套属性:

const street = user?.address?.street;

5.2 空值合并运算符 (?? - ES2020)

提供默认值:

const value = input ?? 'default';

5.3 逻辑赋值运算符 (ES2021)

// 逻辑或赋值
a ||= b; // 等同于 a = a || b

// 逻辑与赋值
a &&= b; // 等同于 a = a && b

// 空值合并赋值
a ??= b; // 等同于 a = a ?? b

最佳实践

  1. 对于简单的条件判断,优先使用三元运算符而不是if...else

  2. 遍历数组时优先使用for...of而不是for...in

  3. 避免过深的嵌套,可以使用早期返回(early return)来简化代码

  4. 在switch语句中不要忘记break

  5. 使用可选链和空值合并运算符简化代码

掌握这些流程控制语句是编写高效、可读性强的JavaScript代码的基础。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值