🎥 Video hướng dẫn chi tiết
Nguồn: Khóa học JavaScript - Kteam
➰ Vòng lặp while là gì?
Vòng lặp while thực hiện lặp đi lặp lại một đoạn code khi điều kiện còn đúng:
- 🔄 Kiểm tra điều kiện trước khi thực hiện
- ⏹️ Dừng khi điều kiện trở thành
false - ⚠️ Nguy hiểm: Có thể tạo vòng lặp vô tận nếu không cẩn thận
- 🎯 Phù hợp: Khi không biết trước số lần lặp
🔄 Cú pháp while loop
Cấu trúc cơ bản:
while (condition) {
// Code được thực hiện khi condition = true
// Nhớ cập nhật condition để tránh vòng lặp vô tận
}
Ví dụ đơn giản:
let count = 1;
while (count <= 5) {
console.log("Lần thứ", count);
count++; // Quan trọng: cập nhật count
}
console.log("Kết thúc vòng lặp, count =", count); // 6
Đếm ngược:
let countdown = 5;
while (countdown > 0) {
console.log("Còn", countdown, "giây...");
countdown--;
}
console.log("🚀 Khởi động!");
⚠️ Vòng lặp vô tận và cách tránh
Ví dụ vòng lặp vô tận (NGUY HIỂM!):
// ❌ ĐỪNG CHẠY CODE NÀY!
// let i = 1;
// while (i <= 5) {
// console.log(i);
// // Quên cập nhật i → i luôn = 1 → vòng lặp vô tận
// }
// ❌ Các trường hợp khác
// while (true) {
// console.log("Vô tận!");
// // Không có break hoặc cách thoát
// }
Cách tránh vòng lặp vô tận:
// ✅ Luôn cập nhật biến điều kiện
let i = 1;
while (i <= 5) {
console.log(i);
i++; // QUAN TRỌNG!
}
// ✅ Hoặc dùng safety counter
let attempts = 0;
let maxAttempts = 1000;
while (someCondition && attempts < maxAttempts) {
// Code logic
attempts++;
}
if (attempts >= maxAttempts) {
console.log("Đã đạt giới hạn an toàn");
}
3. do-while loop
// while - kiểm tra trước
let x = 10;
while (x < 5) {
console.log("while:", x); // Không chạy vì 10 không < 5
x++;
}
// do-while - thực hiện trước, kiểm tra sau
let y = 10;
do {
console.log("do-while:", y); // Chạy 1 lần: "do-while: 10"
y++;
} while (y < 5);
// Ví dụ menu chương trình
let choice;
do {
console.log("=== MENU ===");
console.log("1. Xem thông tin");
console.log("2. Thoát");
choice = Math.floor(Math.random() * 3) + 1; // Giả lập input
console.log("Bạn chọn:", choice);
if (choice === 1) {
console.log("→ Hiển thị thông tin");
} else if (choice === 2) {
console.log("→ Thoát chương trình");
}
} while (choice !== 2);
4. Ví dụ thực tế
// Tìm kiếm trong mảng
function findInArray(array, target) {
let index = 0;
while (index < array.length) {
if (array[index] === target) {
return { found: true, index: index };
}
index++;
}
return { found: false, index: -1 };
}
// Test
let numbers = [5, 2, 8, 1, 9, 3];
let result = findInArray(numbers, 8);
console.log(result); // { found: true, index: 2 }
// Validation với while
function getValidAge() {
let age, attempts = 0;
while (attempts < 3) {
age = Number(prompt("Nhập tuổi (0-150):"));
if (!isNaN(age) && age >= 0 && age <= 150) {
return age;
}
attempts++;
console.log(`Tuổi không hợp lệ. Còn ${3 - attempts} lần thử`);
}
return null; // Hết lượt thử
}
Chốt lại
- while loop: Kiểm tra điều kiện trước khi thực hiện, lặp khi điều kiện còn
true - do-while loop: Thực hiện ít nhất 1 lần, kiểm tra điều kiện sau
- Tránh vòng lặp vô tận: Luôn cập nhật biến điều kiện, dùng safety counter
- Use cases: Không biết trước số lần lặp, validation input, tìm kiếm dữ liệu
- Best practices: Test kỹ logic điều kiện, luôn có cách thoát khỏi loop
📚 Bài tiếp theo
👉 Bài 13: Vòng lặp For - Tìm hiểu vòng lặp for và các biến thể của nó!