JavaScript while 循环
while 循环是前测试循环结构,先判断条件是否为真,再决定是否执行循环体,适合循环次数不确定的场景。
基本语法
JavaScript
while (条件) {
// 循环体
// 需要在循环体内更新条件相关变量
}
基本用法
JavaScript
// 基本计数循环
let i = 0;
while (i < 5) {
console.log(i);
i++;
}
// 输出:0, 1, 2, 3, 4
// 执行流程:
// 1. 判断条件是否为 true
// 2. 如果为 true,执行循环体
// 3. 循环体执行完后,回到步骤 1
// 4. 如果条件为 false,退出循环
条件控制循环
JavaScript
// 条件满足时继续循环
let count = 0;
while (count < 3) {
console.log('执行次数:', count);
count++;
}
// 用户输入验证
let input;
while (input !== 'quit') {
input = prompt('输入 quit 退出');
}
// 处理数据直到条件满足
let data = [1, 2, 3, 4, 5];
while (data.length > 0) {
console.log(data.pop());
}
// 输出:5, 4, 3, 2, 1
与 for 循环对比
JavaScript
// for 循环实现
for (let i = 0; i < 5; i++) {
console.log(i);
}
// while 循环等价实现
let i = 0;
while (i < 5) {
console.log(i);
i++;
}
// for 更适合:已知循环次数
// while 更适合:条件控制、不确定次数
实际应用
JavaScript
// 读取数据直到结束
function readLines(lines) {
let result = [];
let index = 0;
while (index < lines.length) {
if (lines[index].startsWith('#')) {
index++;
continue; // 跳过注释行
}
result.push(lines[index]);
index++;
}
return result;
}
// 模拟游戏循环
let gameOver = false;
while (!gameOver) {
// 处理输入
// 更新状态
// 渲染画面
if (playerHealth <= 0) {
gameOver = true;
}
}
// 累加求和
let sum = 0;
let n = 1;
while (n <= 100) {
sum += n;
n++;
}
console.log(sum); // 5050
循环控制
JavaScript
// break 跳出循环
let num = 0;
while (num < 100) {
if (num === 5) break;
console.log(num);
num++;
}
// 输出:0, 1, 2, 3, 4
// continue 跳过当前迭代
let x = 0;
while (x < 5) {
x++;
if (x === 3) continue;
console.log(x);
}
// 输出:1, 2, 4, 5
// 注意:continue 使用时要确保迭代语句在正确位置
// 错误示例
let y = 0;
while (y < 5) {
if (y === 2) continue; // y 永远是 2,死循环
console.log(y);
y++; // 这行在 continue 后不会执行
}
常见模式
JavaScript
// 条件循环模式
while (condition) {
// 处理
updateCondition(); // 更新条件
}
// 无限循环 + break
while (true) {
let input = getData();
if (shouldStop(input)) {
break;
}
process(input);
}
// 读取队列
const queue = [1, 2, 3, 4, 5];
while (queue.length > 0) {
const item = queue.shift();
console.log(item);
}
// 链表遍历
function traverseLinkedList(node) {
while (node !== null) {
console.log(node.value);
node = node.next;
}
}
避免死循环
JavaScript
// 死循环(条件永远为 true)
while (true) {
// 没有 break,无限执行
}
// 忘记更新条件变量
let i = 0;
while (i < 5) {
console.log(i);
// 忘记 i++,死循环
}
// 条件更新位置错误
let j = 0;
while (j < 5) {
if (j === 2) continue;
console.log(j);
j++; // j=2 时 continue 跳过这行,死循环
}
// 正确写法
let k = 0;
while (k < 5) {
k++; // 更新放在前面
if (k === 3) continue;
console.log(k);
}
注意事项
- 条件变量必须在循环体内更新,否则会死循环
- 条件初始为 false 时,循环体一次都不执行
- 注意 continue 的位置,避免跳过更新语句
- 适合不确定次数、需要条件控制的场景
JavaScript
// 条件为 false 时不执行
let condition = false;
while (condition) {
console.log('不会执行');
}
// 对比 do-while:至少执行一次
do {
console.log('会执行一次');
} while (false);
要点总结
- while 是前测试循环:先判断条件,再执行循环体
- 必须在循环体内更新条件变量,避免死循环
- 条件初始为 false 时,循环体一次都不执行
- 适合不确定次数、条件控制的循环场景
- break 跳出循环,continue 跳过当前迭代
- 与 for 的区别:while 更适合条件控制,for 更适合计数循环
📝 发现内容有误?点击此处直接编辑