Bootstrap

[JavaScript] 深入理解流程控制结构


在编程中, 流程控制是指控制代码执行顺序的机制。通过流程控制结构,我们可以根据不同的条件执行不同的代码块,实现逻辑判断、循环遍历和跳出循环等功能。常见的流程控制语句有: if-elseswitch-caseforwhile,以及控制语句 breakcontinue。本文将详细讲解这些控制结构的用法,并深入理解 breakcontinue的应用。

1. if-else 语句

if-else语句是最基本的流程控制结构之一,用于基于条件表达式来执行不同的代码块。它通过判断一个或多个条件表达式的真假来决定是否执行某个代码块。

基本语法:
if (condition) {
    // 条件为 true 时执行的代码
} else {
    // 条件为 false 时执行的代码
}
示例:
let age = 20;
if (age >= 18) {
    console.log("成年人");
} else {
    console.log("未成年人");
}
扩展:else if

如果有多个条件需要判断,可以使用else if来处理多个分支条件。

let score = 85;
if (score >= 90) {
    console.log("优秀");
} else if (score >= 75) {
    console.log("良好");
} else if (score >= 60) {
    console.log("及格");
} else {
    console.log("不及格");
}

2. switch-case 语句

switch-case语句用于处理多个可能的条件,通常适用于多个不同值的判断。它与if-else相比更简洁,尤其在有多个值需要判断时。

基本语法:
switch (expression) {
    case value1:
        // expression === value1 时执行的代码
        break;
    case value2:
        // expression === value2 时执行的代码
        break;
    default:
        // 如果没有匹配的 case 执行的代码
}
示例:
let fruit = "apple";
switch (fruit) {
    case "apple":
        console.log("这是一个苹果");
        break;
    case "banana":
        console.log("这是一个香蕉");
        break;
    default:
        console.log("未知的水果");
}
注意事项:
  • switch语句会比较严格的值(包括数据类型),因此如果需要进行非严格的比较,可以考虑使用if-else
  • break是用来跳出switch语句块的。如果没有break,程序会继续执行下一个case,即使它的值不匹配,这种情况叫做fall-through

3. for 循环

for循环用于重复执行一段代码,直到满足退出条件。它通常用于已知执行次数的场景。

基本语法:
for (initialization; condition; increment) {
    // 循环体
}
  • initialization:初始化部分,通常用于定义和初始化循环变量。
  • condition:条件表达式,判断是否继续执行循环。
  • increment:每次循环结束时,更新循环变量。
示例:
for (let i = 0; i < 5; i++) {
    console.log(i);  // 输出 0 1 2 3 4
}
扩展:for-infor-of
  • for-in:用于遍历对象的键(属性)。
  • for-of:用于遍历数组或其他可迭代对象的元素。
// for-in 示例
const person = { name: "Alice", age: 25 };
for (let key in person) {
    console.log(key + ": " + person[key]);
}

// for-of 示例
let arr = [1, 2, 3];
for (let value of arr) {
    console.log(value);  // 输出 1 2 3
}

4. while 循环

while循环用于在条件为真时反复执行一段代码,适用于循环次数不确定的情况,通常在开始前无法预知循环次数时使用。

基本语法:
while (condition) {
    // 循环体
}
示例:
let count = 0;
while (count < 5) {
    console.log(count);  // 输出 0 1 2 3 4
    count++;
}
注意事项:
  • 如果条件从一开始就是falsewhile循环不会执行任何代码。
  • 使用while时要小心无限循环,确保循环条件最终能变为false

5. do-while 循环

do-while循环与while循环类似,区别在于do-while会先执行一次循环体,然后再检查条件。

基本语法:
do {
    // 循环体
} while (condition);
示例:
let count = 0;
do {
    console.log(count);  // 输出 0 1 2 3 4
    count++;
} while (count < 5);

6. break 和 continue 的使用

6.1 break

break语句用于跳出循环switch-case语句块,通常在满足某个条件时使用,跳出当前的循环或代码块。

示例:
for (let i = 0; i < 10; i++) {
    if (i === 5) {
        break;  // 当 i 等于 5 时跳出循环
    }
    console.log(i);
}

输出:

0
1
2
3
4
6.2 continue

continue语句用于跳过当前循环的剩余部分,直接进入下一次循环迭代。它不会终止整个循环,而是跳过当前循环中的其余代码,继续执行下一次循环。

示例:
for (let i = 0; i < 5; i++) {
    if (i === 2) {
        continue;  // 当 i 等于 2 时跳过当前循环
    }
    console.log(i);
}

输出:

0
1
3
4

总结

  • if-else:用于条件判断,决定执行哪段代码。
  • switch-case:用于多条件选择,尤其适用于固定值判断。
  • for:用于已知次数的循环,通常用于遍历数组或固定次数的任务。
  • while:用于在未知次数的情况下执行循环,直到条件不再满足。
  • break:用于跳出当前循环或switch语句块。
  • continue:用于跳过当前循环的剩余部分,进入下一次迭代。

掌握这些控制结构和语句的使用,可以使你在编写代码时更加灵活和高效,能够应对各种复杂的逻辑需求。在实际开发中,合理地选择控制结构将直接影响代码的可读性和执行效率。

;