JavaScript循环语句

164 阅读7分钟

五、JavaScript循环语句

5.1 while循环

JavaScript中,while循环是一种用于重复执行代码块的控制结构,直到指定的条件为false。它的基本语法结构允许在运行时根据条件进行动态的循环判断。

1. 语法

while循环的基本语法如下:

while (condition) {
    // 循环体代码
}
  • condition:一个布尔表达式,在每次循环迭代前进行评估。
  • conditiontrue时,执行循环体代码;当conditionfalse时,退出循环。

2. 示例用法

示例1:基本使用

下面的示例展示了一个简单的while循环,用于打印从1到5的数字:

let i = 1;

while (i <= 5) {
    console.log(i); // 输出当前数字
    i++; // 递增
}
// 输出:
// 1
// 2
// 3
// 4
// 5

示例2:控制循环

可以通过控制变量来确保循环在条件为true时结束。

let count = 0;

while (count < 3) {
    console.log("This is iteration number: " + count);
    count++; // 更新计数
}
// 输出:
// This is iteration number: 0
// This is iteration number: 1
// This is iteration number: 2

3. 注意事项

3.1 可能导致无限循环

while循环容易出现无限循环的情况,特别是如果condition始终为true而没有正确更新循环变量。

let j = 0;

while (j < 5) {
    console.log(j); // 永远打印0,导致无限循环
    // j++; // 忘记更新循环变量会导致循环无法终止
}

3.2 使用breakcontinue

  • break:可以用来立即退出循环,不再执行后续的循环体。
  • continue:可以用来跳过当前循环的剩余部分,直接开始下一次循环。
let k = 0;

while (k < 5) {
    k++;
    if (k === 3) {
        continue; // 跳过输出3
    }
    console.log(k); // 输出: 1, 2, 4, 5
}
// 输出:
// 1
// 2
// 4
// 5

4. 总结

while循环是一种灵活的循环结构,适合于在条件未知的情况下执行代码块。使用while循环时需小心确保循环条件能够最终变为false,以避免无限循环的风险。

5.2 do...while循环

do...while循环是JavaScript中一种特殊的循环结构,它与while循环类似,但不同之处在于do...while循环会先执行一次循环体,然后再判断条件。这意味着即使条件最初为false,循环体至少会执行一次

  1. 语法

do...while循环的基本语法如下:

do {
    // 循环体代码
} while (condition);
  • do:关键字,表示开始一个do...while循环。
  • condition:布尔表达式,在循环体执行完后进行评估。
  • 如果conditiontrue,则继续执行循环体;如果为false,则退出循环。

2. 示例用法

示例1:基本使用

下面的示例展示了do...while循环的基本用法,打印从1到5的数字:

let i = 1;

do {
    console.log(i); // 输出当前数字
    i++; // 递增
} while (i <= 5);
// 输出:
// 1
// 2
// 3
// 4
// 5

示例2:条件初始为假

即使初始条件为假,do...while循环也会至少执行一次:

let j = 10;

do {
    console.log(j); // 输出: 10
    j++; // 递增
} while (j < 10); // 条件为假,循环结束
// 输出: 10

3. 注意事项

3.1 无限循环

do...while循环同样可能导致无限循环,尤其是在循环条件未能更新的情况下。

let k = 0;

do {
    console.log(k); // 输出: 0
    // k++; // 忘记更新循环变量会导致循环无法终止
} while (k < 5);

3.2 使用breakcontinue

可以在do...while循环中使用breakcontinue,控制循环的执行流。

let m = 0;

do {
    m++;
    if (m === 3) {
        continue; // 跳过输出3
    }
    console.log(m); // 输出: 1, 2, 4, 5
} while (m < 5);
// 输出:
// 1
// 2
// 4
// 5

4. 总结

do...while循环是一种适用于需要确保循环体至少执行一次的场景的循环结构。它的条件检查是在循环体执行后进行的,这使得在某些情况下比普通的while循环更灵活。

5.3 for循环

JavaScript中,for循环是一种用于重复执行代码块的控制结构,通常用于在已知循环次数的情况下进行迭代。for循环的语法结构非常灵活,适用于遍历数组、对象、执行特定次数的操作等场景。

1. 语法

for循环的基本语法如下:

for (initialization; condition; increment) {
    // 循环体代码
}
  • initialization:初始化语句,通常用于定义和初始化循环变量。
  • condition:布尔表达式,在每次迭代前进行评估。当该条件为true时,执行循环体;为false时,退出循环。
  • increment:每次迭代后执行的语句,通常用于更新循环变量。

2. 示例用法

示例1:基本使用

以下示例展示了一个简单的for循环,用于打印从1到5的数字:

for (let i = 1; i <= 5; i++) {
    console.log(i); // 输出当前数字
}
// 输出:
// 1
// 2
// 3
// 4
// 5

示例2:逆序循环

可以使用for循环以逆序方式遍历数字:

for (let j = 5; j >= 1; j--) {
    console.log(j); // 输出当前数字
}
// 输出:
// 5
// 4
// 3
// 2
// 1

3. 遍历数组

for循环经常用于遍历数组中的元素:

let fruits = ["apple", "banana", "orange"];

for (let k = 0; k < fruits.length; k++) {
    console.log(fruits[k]); // 输出当前水果
}
// 输出:
// apple
// banana
// orange

4. 嵌套循环

可以在for循环中嵌套其他循环,用于处理多维数组或复杂的循环逻辑:

for (let m = 1; m <= 3; m++) {
    for (let n = 1; n <= 2; n++) {
        console.log(`Outer loop: ${m}, Inner loop: ${n}`);
    }
}
// 输出:
// Outer loop: 1, Inner loop: 1
// Outer loop: 1, Inner loop: 2
// Outer loop: 2, Inner loop: 1
// Outer loop: 2, Inner loop: 2
// Outer loop: 3, Inner loop: 1
// Outer loop: 3, Inner loop: 2

5. for...offor...in 循环

除了基本的for循环外,JavaScript还提供了两种特殊的循环结构:for...offor...in

  • for...of:用于遍历可迭代对象(如数组、字符串等)。

    let colors = ["red", "green", "blue"];
    for (let color of colors) {
        console.log(color);
    }
    // 输出:
    // red
    // green
    // blue
    
  • for...in:用于遍历对象的可枚举属性。

    let person = { name: "Alice", age: 25, city: "New York" };
    for (let key in person) {
        console.log(key + ": " + person[key]);
    }
    // 输出:
    // name: Alice
    // age: 25
    // city: New York
    

6. 总结

for循环是一种强大且灵活的迭代控制结构,适合于已知次数的循环、数组遍历以及复杂的嵌套逻辑。利用for...offor...in结构,能够更简洁地遍历数组和对象,提升代码的可读性和维护性。

5.4 breakcontinue

JavaScript中,breakcontinue是用于控制循环执行流程的关键字。它们可以在各种循环结构中使用(如forwhiledo...while等)以改变默认的循环行为。

  1. break

break用于立即终止循环,跳出循环体,控制流将继续到循环之后的第一条语句。它不仅可以用于循环,也可以用于switch语句。

示例:使用break终止循环

for (let i = 1; i <= 10; i++) {
    if (i === 5) {
        break; // 当i等于5时,终止循环
    }
    console.log(i); // 输出: 1, 2, 3, 4
}
// 输出:
// 1
// 2
// 3
// 4

switch语句中的使用

let fruit = "banana";

switch (fruit) {
    case "apple":
        console.log("It's an apple.");
        break; // 终止switch语句
    case "banana":
        console.log("It's a banana.");
        break; // 终止switch语句
    default:
        console.log("Unknown fruit.");
}
// 输出: "It's a banana."
  1. continue

continue用于跳过当前循环迭代中的剩余代码,直接进入下一次循环的条件检查。它会继续执行下一个循环迭代,而不是退出整个循环。

示例:使用continue跳过某次迭代

for (let i = 1; i <= 5; i++) {
    if (i === 3) {
        continue; // 当i等于3时,跳过该次循环
    }
    console.log(i); // 输出: 1, 2, 4, 5
}
// 输出:
// 1
// 2
// 4
// 5

3. 在嵌套循环中的使用

breakcontinue还可以在嵌套循环中使用,但需要注意它们只影响当前循环。若需要跳出外层循环,需使用标签(label)。

示例:在嵌套循环中使用break

outerLoop: // 标签
for (let i = 1; i <= 3; i++) {
    for (let j = 1; j <= 3; j++) {
        if (j === 2) {
            break outerLoop; // 终止外层循环
        }
        console.log(`i = ${i}, j = ${j}`);
    }
}
// 输出:
// i = 1, j = 1

示例:在嵌套循环中使用continue

for (let i = 1; i <= 3; i++) {
    for (let j = 1; j <= 3; j++) {
        if (j === 2) {
            continue; // 跳过内层循环的剩余代码,继续内层循环
        }
        console.log(`i = ${i}, j = ${j}`);
    }
}
// 输出:
// i = 1, j = 1
// i = 1, j = 3
// i = 2, j = 1
// i = 2, j = 3
// i = 3, j = 1
// i = 3, j = 3

4. 总结

  • **break**用于立即终止循环或switch语句,控制流将转到循环或switch之后的第一条语句。
  • **continue**用于跳过当前迭代的剩余代码,直接进入下一次循环的条件判断。
  • 在嵌套循环中使用时,可以使用标签来控制外层循环的行为

欲知后事如何,且听下回分解...