Vòng lặp là một khái niệm cơ bản trong JavaScript — chúng giúp bạn thực thi một khối mã nhiều lần. Tuy nhiên, với nhiều loại vòng lặp khác nhau, điều quan trọng là bạn cần biết khi nào và cách sử dụng từng loại một cách hiệu quả.
1. Vòng lặp for
Khi nào nên dùng:
- Khi bạn biết chính xác số lần cần lặp.
- Phù hợp với mảng khi bạn cần sử dụng chỉ số (index).
Ví dụ:
for (let i = 0; i < 5; i++) { console.log(i); // 0, 1, 2, 3, 4
}
2. Vòng lặp while
Khi nào nên dùng:
- Khi số lần lặp không xác định và phụ thuộc vào một điều kiện.
- Hữu ích khi đọc luồng dữ liệu (stream) hoặc chờ một điều kiện được đáp ứng.
Ví dụ:
let count = 0;
while (count < 5) { console.log(count); // 0, 1, 2, 3, 4 count++;
}
3. Vòng lặp do...while
Khi nào nên dùng:
- Khi bạn muốn vòng lặp chạy ít nhất một lần, ngay cả khi điều kiện là sai.
Ví dụ:
let x = 0;
do { console.log(x); // 0 (runs once even if condition is false) x++;
} while (x < 0);
4. Vòng lặp for...of
Khi nào nên dùng:
- Khi duyệt qua mảng, chuỗi hoặc các đối tượng có thể lặp (iterables).
- Cú pháp gọn hơn khi bạn không cần chỉ số.
Ví dụ:
const arr = [1, 2, 3];
for (const num of arr) { console.log(num); // 1, 2, 3
}
5. Vòng lặp for...in
Khi nào nên dùng:
- Khi duyệt qua thuộc tính của đối tượng (keys).
- Không nên dùng với mảng (hãy dùng
for...of
thay thế).
Ví dụ:
const obj = { a: 1, b: 2 };
for (const key in obj) { console.log(key, obj[key]); // "a 1", "b 2"
}
6. Phương thức Array.forEach()
Khi nào nên dùng:
- Khi bạn muốn thực thi một hàm trên từng phần tử của mảng.
- Không trả về mảng mới (khác với
map()
).
Ví dụ:
const numbers = [1, 2, 3];
numbers.forEach(num => console.log(num * 2)); // 2, 4, 6
Tóm tắt chính
✅ Dùng for khi bạn biết số lần lặp.
✅ Dùng while/do...while cho vòng lặp dựa vào điều kiện.
✅ Dùng for...of cho mảng và các đối tượng có thể lặp.
✅ Dùng for...in cho các thuộc tính của đối tượng (nhớ kiểm tra hasOwnProperty).
✅ Dùng forEach để lặp đơn giản qua mảng (nhưng không thể dừng sớm được).
Bạn thường dùng loại vòng lặp nào nhất? Hãy chia sẻ ở phần bình luận nhé!