Bạn có thể thoát ra khỏi JavaScript vòng lặp for không?

Hàm forEach() của JavaScript thực thi một hàm trên mọi phần tử trong một mảng. Tuy nhiên, vì forEach() là một hàm chứ không phải là một vòng lặp nên việc sử dụng câu lệnh break là một lỗi cú pháp

trừ khi bạn có lý do chính đáng để không. Tuy nhiên, nếu bạn thấy mình mắc kẹt với một forEach() cần dừng sau một thời điểm nhất định và việc tái cấu trúc để sử dụng for/of không phải là một lựa chọn, đây là 4 cách giải quyết

1. Sử dụng every() thay vì forEach()

Hàm every() hoạt động giống như hàm forEach(), ngoại trừ việc nó dừng lặp qua mảng bất cứ khi nào hàm gọi lại trả về một giá trị sai

Với every(), forEach()1 tương đương với một break, và forEach()3 tương đương với một forEach()4

Một cách khác là sử dụng hàm forEach()5, tương tự nhưng chỉ lật các giá trị boolean. Với forEach()5, forEach()3 tương đương với breakforEach()1 tương đương với forEach()4

2. Lọc ra các giá trị bạn muốn bỏ qua

Thay vì nghĩ về cách break ra khỏi một forEach(), hãy thử nghĩ về cách lọc ra tất cả các giá trị mà bạn không muốn forEach() lặp lại. Cách tiếp cận này phù hợp hơn với các nguyên tắc lập trình chức năng

Hàm break4 nhận một cuộc gọi lại và trả về chỉ mục đầu tiên của mảng có giá trị mà cuộc gọi lại trả về trung thực cho. Sau đó, hàm break5 sao chép một phần của mảng

3. Sử dụng một biến cục bộ break6

Nếu bạn không thể sử dụng every() hoặc break5, bạn có thể kiểm tra cờ break6 khi bắt đầu cuộc gọi lại forEach() của mình. Nếu bạn đặt break6 thành for/of2, cuộc gọi lại forEach() trả về ngay lập tức

Cách tiếp cận này rườm rà và không trang nhã, nhưng nó hoạt động với chi phí đầu óc tối thiểu. Bạn có thể sử dụng phương pháp này nếu các phương pháp trước đây có vẻ quá thông minh

4. Sửa đổi chiều dài mảng

Hàm forEach() tôn trọng các thay đổi đối với thuộc tính for/of5 của mảng. Vì vậy, bạn có thể buộc forEach() thoát ra khỏi vòng lặp sớm bằng cách ghi đè lên thuộc tính for/of5 của mảng như hình bên dưới

Trong khi phương pháp này hoạt động, nó cũng làm thay đổi mảng. Nếu bạn thay đổi độ dài của mảng, bạn sẽ cắt bớt mảng một cách hiệu quả. các hoạt động tiếp theo, như for/of hoặc for/of9 sẽ chỉ đi qua phiên bản rút gọn của mảng. Không nên sử dụng phương pháp này để thoát ra khỏi vòng lặp forEach()

Câu lệnh break kết thúc vòng lặp hiện tại, switch hoặc câu lệnh nhãn và chuyển điều khiển chương trình sang câu lệnh theo sau câu lệnh đã kết thúc

break;
break label;

label Tùy chọn

Mã định danh được liên kết với nhãn của câu lệnh. Nếu câu lệnh không phải là vòng lặp hoặc switch, điều này là bắt buộc

Câu lệnh break bao gồm một nhãn tùy chọn cho phép chương trình thoát ra khỏi câu lệnh có nhãn. Câu lệnh break cần được lồng trong nhãn được tham chiếu. Câu lệnh được gắn nhãn có thể là bất kỳ câu lệnh khối nào;

Câu lệnh break, có hoặc không có nhãn sau, không thể được sử dụng trong phần thân của hàm được lồng trong câu lệnh vòng lặp, công tắc hoặc nhãn hiện tại mà câu lệnh break nhằm thoát ra khỏi

Hàm sau đây có câu lệnh break kết thúc vòng lặp

function testBreak(x) {
  let i = 0;

  while (i < 6) {
    if (i === 3) {
      break;
    }
    i += 1;
  }

  return i * x;
}
6 khi
function testBreak(x) {
  let i = 0;

  while (i < 6) {
    if (i === 3) {
      break;
    }
    i += 1;
  }

  return i * x;
}
7 là 3, sau đó trả về giá trị 3 *
function testBreak(x) {
  let i = 0;

  while (i < 6) {
    if (i === 3) {
      break;
    }
    i += 1;
  }

  return i * x;
}
8

function testBreak(x) {
  let i = 0;

  while (i < 6) {
    if (i === 3) {
      break;
    }
    i += 1;
  }

  return i * x;
}

Đoạn mã sau có một câu lệnh break kết thúc câu lệnh switch khi một trường hợp được so khớp và đoạn mã tương ứng đã chạy

const food = "sushi";

switch (food) {
  case "sushi":
    console.log("Sushi is originally from Japan.");
    break;
  case "pizza":
    console.log("Pizza is originally from Italy.");
    break;
  default:
    console.log("I have never heard of that dish.");
    break;
}

Đoạn mã sau sử dụng các câu lệnh break với các khối được gắn nhãn. Câu lệnh break phải được lồng trong bất kỳ nhãn nào mà nó tham chiếu. Lưu ý rằng

const food = "sushi";

switch (food) {
  case "sushi":
    console.log("Sushi is originally from Japan.");
    break;
  case "pizza":
    console.log("Pizza is originally from Italy.");
    break;
  default:
    console.log("I have never heard of that dish.");
    break;
}
3 được lồng trong
const food = "sushi";

switch (food) {
  case "sushi":
    console.log("Sushi is originally from Japan.");
    break;
  case "pizza":
    console.log("Pizza is originally from Italy.");
    break;
  default:
    console.log("I have never heard of that dish.");
    break;
}
4

________số 8_______

Đoạn mã sau cũng sử dụng các câu lệnh break với các khối được gắn nhãn, nhưng tạo ra một

const food = "sushi";

switch (food) {
  case "sushi":
    console.log("Sushi is originally from Japan.");
    break;
  case "pizza":
    console.log("Pizza is originally from Italy.");
    break;
  default:
    console.log("I have never heard of that dish.");
    break;
}
6 vì câu lệnh break của nó nằm trong phạm vi
const food = "sushi";

switch (food) {
  case "sushi":
    console.log("Sushi is originally from Japan.");
    break;
  case "pizza":
    console.log("Pizza is originally from Italy.");
    break;
  default:
    console.log("I have never heard of that dish.");
    break;
}
8 nhưng lại tham chiếu tới
const food = "sushi";

switch (food) {
  case "sushi":
    console.log("Sushi is originally from Japan.");
    break;
  case "pizza":
    console.log("Pizza is originally from Italy.");
    break;
  default:
    console.log("I have never heard of that dish.");
    break;
}
9. Câu lệnh break phải luôn được lồng trong bất kỳ nhãn nào mà nó tham chiếu

block1: {
  console.log('1');
  break block2; // SyntaxError: label not found
}

block2: {
  console.log('2');
}

Các

const food = "sushi";

switch (food) {
  case "sushi":
    console.log("Sushi is originally from Japan.");
    break;
  case "pizza":
    console.log("Pizza is originally from Italy.");
    break;
  default:
    console.log("I have never heard of that dish.");
    break;
}
6 cũng được tạo trong các ví dụ mã sau đây sử dụng các câu lệnh break trong các hàm được lồng trong một vòng lặp hoặc khối được gắn nhãn mà các câu lệnh break nhằm thoát ra khỏi

Bạn có thể thoát ra khỏi vòng lặp for không?

Thoát khỏi Vòng lặp For. Để thoát khỏi vòng lặp for, bạn có thể sử dụng câu lệnh kết thúc, tiếp tục, tiếp tục hoặc trả về .

Làm cách nào để thoát khỏi vòng lặp for trong JavaScript?

Câu lệnh ngắt ngắt ra khỏi công tắc hoặc vòng lặp. Trong một công tắc, nó thoát ra khỏi khối công tắc. Điều này dừng việc thực thi thêm mã bên trong công tắc. Trong một vòng lặp, nó thoát ra khỏi vòng lặp và tiếp tục thực thi mã sau vòng lặp (nếu có).