Lệnh break và continue trong vòng lặp JavaScript

Javascript căn bản | by Học Javascript

Trong lập trình JavaScript, việc kiểm soát luồng thực thi trong vòng lặp là vô cùng quan trọng để tối ưu hiệu suất và đảm bảo chương trình hoạt động đúng như mong muốn. Hai lệnh breakcontinue đóng vai trò quan trọng trong việc điều chỉnh quá trình lặp, giúp dừng vòng lặp hoặc bỏ qua một lần lặp khi cần thiết. Lệnh break được sử dụng khi muốn thoát khỏi vòng lặp ngay lập tức, dù chưa hoàn thành tất cả các lần lặp. Trong khi đó, continue giúp bỏ qua lần lặp hiện tại và chuyển sang lần lặp tiếp theo, mà không dừng vòng lặp hoàn toàn.

Cả hai lệnh này đều có những ứng dụng thực tế quan trọng trong lập trình, chẳng hạn như:

  • Dừng vòng lặp khi tìm thấy giá trị cần thiết.
  • Bỏ qua dữ liệu không hợp lệ trong danh sách.
  • Tối ưu hóa hiệu suất xử lý bằng cách tránh thực thi các phần không cần thiết.

Trong bài viết này, mình sẽ tìm hiểu chi tiết cách hoạt động của breakcontinue, cùng với những ví dụ minh họa thực tế để giúp bạn hiểu rõ hơn về cách sử dụng chúng trong JavaScript.

Lệnh break trong vòng lặp trong JavaScript

Lệnh break là một trong những công cụ quan trọng trong JavaScript, giúp kiểm soát luồng thực thi của vòng lặp bằng cách dừng vòng lặp ngay lập tức khi điều kiện cụ thể được thỏa mãn.

Giải thích khái niệm lệnh break

  • Trong JavaScript, lệnh break được sử dụng trong các vòng lặp như for, while, do...while để thoát khỏi vòng lặp ngay lập tức.
  • Khi break được thực thi, vòng lặp sẽ kết thúc ngay lập tức, dù số lần lặp chưa hoàn thành.
  • Lệnh break thường được sử dụng khi ta tìm thấy một điều kiện nhất định và không cần tiếp tục lặp nữa.

Ví dụ thực tế:

  • Khi tìm thấy một giá trị trong danh sách, ta có thể dừng vòng lặp.
  • Khi cần dừng vòng lặp khi điều kiện nào đó xảy ra, tránh việc lặp không cần thiết.

Cú pháp chung của break

Lệnh break được sử dụng trong vòng lặp for, while, do...while theo cú pháp sau:

Cú pháp chung

for (let i = 0; i < 10; i++) {
    if (i === 5) {
        break; // Khi i = 5, vòng lặp sẽ dừng ngay lập tức
    }
    console.log(i);
}

Giải thích:

  • Vòng lặp chạy từ i = 0 đến i < 10.
  • Khi i đạt giá trị 5, điều kiện if (i === 5) thỏa mãn và break được thực thi.
  • Kết quả: Vòng lặp dừng ngay tại i = 5, dù chưa lặp đến i = 9.

Kết quả in ra:

0
1
2
3
4

Ví dụ sử dụng break

Ví dụ 1: Dừng vòng lặp khi tìm thấy giá trị mong muốn trong mảng

const numbers = [1, 3, 5, 7, 9];

for (let num of numbers) {
    if (num === 5) {
        console.log("Tìm thấy số 5, dừng vòng lặp.");
        break;
    }
    console.log(num);
}

Giải thích:

  • Vòng lặp for...of duyệt qua từng phần tử trong mảng numbers.
  • Khi gặp số 5, lệnh break sẽ dừng vòng lặp ngay lập tức.

Kết quả in ra:

1
3
Tìm thấy số 5, dừng vòng lặp.

Ví dụ 2: Dừng vòng lặp khi gặp điều kiện đặc biệt trong quá trình xử lý dữ liệu

let data = [10, 20, -1, 40, 50];

for (let value of data) {
    if (value < 0) {
        console.log("Gặp số âm, dừng vòng lặp.");
        break;
    }
    console.log("Xử lý giá trị:", value);
}

Giải thích:

  • Nếu có một số âm trong dữ liệu (-1), vòng lặp sẽ dừng ngay khi gặp nó.
  • Kết quả in ra:
Xử lý giá trị: 10
Xử lý giá trị: 20
Gặp số âm, dừng vòng lặp.

Ứng dụng thực tế của break

Dừng vòng lặp khi tìm thấy dữ liệu hợp lệ

Trong thực tế, khi tìm kiếm một phần tử cụ thể trong danh sách, ta không cần tiếp tục duyệt khi đã tìm thấy.

let users = ["Alice", "Bob", "Charlie", "David"];
let searchName = "Charlie";

for (let user of users) {
    if (user === searchName) {
        console.log(`Tìm thấy ${searchName}, dừng tìm kiếm.`);
        break;
    }
    console.log(`Kiểm tra: ${user}`);
}

Kết quả:

Kiểm tra: Alice
Kiểm tra: Bob
Tìm thấy Charlie, dừng tìm kiếm.

Thoát khỏi vòng lặp trong trò chơi hoặc ứng dụng khi xảy ra điều kiện đặc biệt

Trong trò chơi hoặc ứng dụng, ta có thể dùng break để thoát khỏi vòng lặp nếu một điều kiện đặc biệt xảy ra, chẳng hạn như phát hiện va chạm hoặc hết thời gian.

let enemies = ["Goblin", "Orc", "Dragon", "Zombie"];
let playerAttack = "Dragon";

for (let enemy of enemies) {
    console.log(`Tấn công: ${enemy}`);
    if (enemy === playerAttack) {
        console.log("Đánh bại quái vật nguy hiểm, dừng chiến đấu!");
        break;
    }
}

Kết quả:

Lệnh continue trong vòng lặp trong JavaScript

Lệnh continue trong JavaScript là một công cụ mạnh mẽ giúp bỏ qua lần lặp hiện tại và chuyển ngay sang lần lặp tiếp theo mà không thực thi các câu lệnh còn lại trong lần lặp đó.

Giải thích khái niệm lệnh continue

  • Lệnh continue không kết thúc vòng lặp như break, mà chỉ bỏ qua phần còn lại của lần lặp hiện tại và chuyển sang lần lặp tiếp theo.
  • Khi continue được thực thi, tất cả các câu lệnh phía sau nó trong lần lặp hiện tại sẽ bị bỏ qua, và vòng lặp tiếp tục với giá trị mới.
  • continue thường được dùng để bỏ qua những giá trị không mong muốn, chẳng hạn như bỏ qua số lẻ trong một danh sách số hoặc bỏ qua các dữ liệu không hợp lệ trong một tập dữ liệu.

Ví dụ thực tế:

  • Khi duyệt một danh sách và muốn bỏ qua một số giá trị nhất định.
  • Khi cần bỏ qua dữ liệu không hợp lệ và tiếp tục xử lý các dữ liệu khác.

Cú pháp chung của continue

Lệnh continue có thể được sử dụng trong vòng lặp for, while, do...while theo cú pháp sau:

Cú pháp chung

for (let i = 0; i < 10; i++) {
    if (i === 5) {
        continue; // Khi i = 5, bỏ qua lần lặp này và tiếp tục với i = 6
    }
    console.log(i);
}

Giải thích:

  • Vòng lặp chạy từ i = 0 đến i < 10.
  • Khi i = 5, lệnh continue được thực thi, khiến vòng lặp bỏ qua câu lệnh console.log(i); và nhảy đến i = 6.
  • Kết quả: Số 5 không được in ra màn hình.

Kết quả in ra:

0
1
2
3
4
6
7
8
9

Ví dụ sử dụng continue

Ví dụ 1: Bỏ qua số lẻ và chỉ in số chẵn

for (let i = 1; i <= 10; i++) {
    if (i % 2 !== 0) {
        continue; // Bỏ qua số lẻ
    }
    console.log(i); // Chỉ in số chẵn
}

Giải thích:

  • Khi i là số lẻ (i % 2 !== 0), lệnh continue được thực thi, bỏ qua câu lệnh console.log(i);.
  • Chỉ những số chẵn được in ra màn hình.

Kết quả in ra:

2
4
6
8
10
Ví dụ 2: Bỏ qua các số âm trong một mảng số
const numbers = [5, -3, 12, -7, 8];

for (let num of numbers) {
    if (num < 0) {
        continue; // Bỏ qua số âm
    }
    console.log("Số hợp lệ:", num);
}

Giải thích:

  • Khi gặp số âm, continue sẽ bỏ qua lần lặp đó.
  • Chỉ các số dương được xử lý.

Kết quả in ra:

Ví dụ 3: Bỏ qua các tên không hợp lệ trong danh sách người dùng

const users = ["Alice", "", "Bob", "Charlie", "", "David"];

for (let user of users) {
    if (user === "") {
        continue; // Bỏ qua tên rỗng
    }
    console.log("Người dùng hợp lệ:", user);
}

Giải thích:

  • Nếu tên trống (""), vòng lặp bỏ qua lần lặp đó và tiếp tục với người dùng tiếp theo.
  • Chỉ in ra các tên hợp lệ.

Kết quả in ra:

Ứng dụng thực tế của continue

Bỏ qua dữ liệu không hợp lệ trong danh sách

Trong nhiều trường hợp, chúng ta cần lọc bỏ dữ liệu không hợp lệ trước khi xử lý.

const emails = ["[email protected]", "", "[email protected]", "invalid@", "[email protected]"];

for (let email of emails) {
    if (email === "" || !email.includes("@")) {
        continue; // Bỏ qua email trống hoặc không hợp lệ
    }
    console.log("Email hợp lệ:", email);
}

Kết quả:

Email hợp lệ: [email protected]
Email hợp lệ: [email protected]
Email hợp lệ: [email protected]

Bỏ qua lượt xử lý lỗi và tiếp tục với dữ liệu hợp lệ

Giả sử một tập dữ liệu chứa cả dữ liệu đúng và dữ liệu lỗi, ta có thể dùng continue để bỏ qua dữ liệu lỗi.

const data = [100, "error", 200, "fail", 300];

for (let value of data) {
    if (typeof value !== "number") {
        continue; // Bỏ qua giá trị không phải số
    }
    console.log("Xử lý số:", value);
}

Kết quả:

Xử lý số: 100
Xử lý số: 200
Xử lý số: 300

So sánh break và continue trong vòng lặp JavaScript

Trong JavaScript, breakcontinue đều được sử dụng để điều khiển luồng thực thi trong vòng lặp. Tuy nhiên, chúng có tác động khác nhau:

Tiêu chí break continue
Tác động Thoát khỏi vòng lặp hoàn toàn. Bỏ qua lần lặp hiện tại, tiếp tục vòng lặp tiếp theo.
Ứng dụng Khi cần dừng vòng lặp ngay lập tức. Khi muốn bỏ qua một số điều kiện mà không dừng vòng lặp.
Ví dụ Dừng vòng lặp khi tìm thấy giá trị mong muốn. Bỏ qua giá trị không hợp lệ trong danh sách.

Khi nào nên sử dụng break?

  • Khi tìm thấy giá trị cần thiết và không cần tiếp tục vòng lặp nữa.
  • Khi phát hiện lỗi nghiêm trọng và muốn dừng vòng lặp ngay lập tức.
  • Khi cần thoát khỏi vòng lặp vô hạn nếu không có điều kiện dừng rõ ràng.

Ví dụ: Dừng vòng lặp khi tìm thấy số 5 trong danh sách

const numbers = [1, 3, 5, 7, 9];

for (let num of numbers) {
    if (num === 5) {
        console.log("Tìm thấy số 5, dừng vòng lặp.");
        break; // Thoát khỏi vòng lặp ngay lập tức
    }
    console.log(num);
}
Kết quả:
1
3
Tìm thấy số 5, dừng vòng lặp.

Lưu ý: Nếu không có break, vòng lặp sẽ tiếp tục đến hết danh sách.

Khi nào nên sử dụng continue?

  • Khi muốn bỏ qua một số giá trị cụ thể trong vòng lặp nhưng vẫn tiếp tục lặp các giá trị khác.
  • Khi cần lọc bỏ dữ liệu không hợp lệ mà không làm gián đoạn toàn bộ vòng lặp.
  • Khi cần bỏ qua điều kiện đặc biệt trong quá trình xử lý danh sách dữ liệu.

Ví dụ: Bỏ qua số lẻ và chỉ in số chẵn

for (let i = 1; i <= 10; i++) {
    if (i % 2 !== 0) {
        continue; // Bỏ qua số lẻ
    }
    console.log(i); // Chỉ in số chẵn
}

Kết quả:

2
4
6
8
10

Lưu ý: Nếu không có continue, chương trình sẽ in cả số lẻ và số chẵn.

So sánh trực quan break và continue với cùng một vòng lặp

Ví dụ 1: Sử dụng break

for (let i = 1; i <= 10; i++) {
    if (i === 5) {
        break; // Khi i = 5, thoát khỏi vòng lặp
    }
    console.log(i);
}
Kết quả:
1
2
3
4
Ví dụ 2: Sử dụng continue
for (let i = 1; i <= 10; i++) {
    if (i === 5) {
        continue; // Khi i = 5, bỏ qua lần lặp này
    }
    console.log(i);
}

Kết quả:

Kết bài

Trong JavaScript, breakcontinue là hai lệnh quan trọng giúp điều khiển luồng thực thi trong vòng lặp một cách linh hoạt.

  • break được sử dụng khi cần dừng vòng lặp ngay lập tức khi một điều kiện cụ thể được thỏa mãn. Nó giúp tối ưu hiệu suất và tránh các vòng lặp không cần thiết.
  • continue cho phép bỏ qua lần lặp hiện tại và tiếp tục vòng lặp với lần lặp tiếp theo. Điều này hữu ích khi cần lọc bỏ dữ liệu không hợp lệ hoặc bỏ qua một số điều kiện đặc biệt mà không ảnh hưởng đến các lần lặp khác.

Hiểu rõ cách sử dụng breakcontinue sẽ giúp lập trình viên viết mã hiệu quả hơn, tối ưu hơn, tránh những lỗi không mong muốn và cải thiện hiệu suất chương trình.

Bài viết liên quan

  • 2