五、JavaScript循环语句
5.1 while循环
在JavaScript中,while循环是一种用于重复执行代码块的控制结构,直到指定的条件为false。它的基本语法结构允许在运行时根据条件进行动态的循环判断。
1. 语法
while循环的基本语法如下:
while (condition) {
// 循环体代码
}
condition:一个布尔表达式,在每次循环迭代前进行评估。- 当
condition为true时,执行循环体代码;当condition为false时,退出循环。
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 使用break和continue
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,循环体至少会执行一次。
- 语法
do...while循环的基本语法如下:
do {
// 循环体代码
} while (condition);
do:关键字,表示开始一个do...while循环。condition:布尔表达式,在循环体执行完后进行评估。- 如果
condition为true,则继续执行循环体;如果为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 使用break和continue
可以在do...while循环中使用break和continue,控制循环的执行流。
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...of 和 for...in 循环
除了基本的for循环外,JavaScript还提供了两种特殊的循环结构:for...of和for...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...of和for...in结构,能够更简洁地遍历数组和对象,提升代码的可读性和维护性。
5.4 break与continue
在JavaScript中,break和continue是用于控制循环执行流程的关键字。它们可以在各种循环结构中使用(如for、while、do...while等)以改变默认的循环行为。
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."
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. 在嵌套循环中的使用
break和continue还可以在嵌套循环中使用,但需要注意它们只影响当前循环。若需要跳出外层循环,需使用标签(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**用于跳过当前迭代的剩余代码,直接进入下一次循环的条件判断。 - 在嵌套循环中使用时,可以使用标签来控制外层循环的行为
欲知后事如何,且听下回分解...