continue

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Câu lệnh continue kết thúc việc thực thi các câu lệnh trong vòng lặp hiện tại của vòng lặp hiện tại hoặc vòng lặp có nhãn, và tiếp tục thực thi vòng lặp với vòng lặp tiếp theo.

Try it

let text = "";

for (let i = 0; i < 10; i++) {
  if (i === 3) {
    continue;
  }
  text += i;
}

console.log(text);
// Expected output: "012456789"

Cú pháp

js
continue;
continue label;
label Optional

Định danh được liên kết với nhãn của câu lệnh.

Mô tả

Trái ngược với câu lệnh break, continue không kết thúc hoàn toàn việc thực thi vòng lặp, mà thay vào đó:

  • Trong vòng lặp while hoặc do...while, nó nhảy trở lại điều kiện.
  • Trong vòng lặp for, nó nhảy đến biểu thức cập nhật.
  • Trong vòng lặp for...in, for...of, hoặc for await...of, nó nhảy đến vòng lặp tiếp theo.

Câu lệnh continue có thể bao gồm một nhãn tùy chọn cho phép chương trình nhảy đến vòng lặp tiếp theo của câu lệnh vòng lặp có nhãn thay vì vòng lặp trong cùng. Trong trường hợp này, câu lệnh continue cần được lồng trong câu lệnh có nhãn đó.

Câu lệnh continue, có hoặc không có nhãn theo sau, không thể được sử dụng ở cấp cao nhất của script, module, thân hàm, hoặc khối khởi tạo tĩnh, ngay cả khi hàm hoặc class được chứa thêm trong một vòng lặp.

Ví dụ

Sử dụng continue với while

Ví dụ sau đây minh họa vòng lặp while có câu lệnh continue được thực thi khi giá trị của i là 3. Do đó, n nhận các giá trị 1, 3, 7 và 12.

js
let i = 0;
let n = 0;

while (i < 5) {
  i++;

  if (i === 3) {
    continue;
  }

  n += i;
}

Sử dụng continue với nhãn

Trong ví dụ sau, một câu lệnh có nhãn checkIAndJ chứa một câu lệnh có nhãn checkJ. Nếu gặp continue, chương trình tiếp tục ở đầu câu lệnh checkJ. Mỗi khi gặp continue, checkJ lặp lại cho đến khi điều kiện của nó trả về false. Khi trả về false, phần còn lại của câu lệnh checkIAndJ được hoàn thành.

Nếu continue có nhãn là checkIAndJ, chương trình sẽ tiếp tục ở đầu câu lệnh checkIAndJ.

js
let i = 0;
let j = 8;

checkIAndJ: while (i < 4) {
  console.log(`i: ${i}`);
  i += 1;

  checkJ: while (j > 4) {
    console.log(`j: ${j}`);
    j -= 1;

    if (j % 2 === 0) continue;
    console.log(`${j} is odd.`);
  }
  console.log(`i = ${i}`);
  console.log(`j = ${j}`);
}

Kết quả:

i: 0

// start checkJ
j: 8
7 is odd.
j: 7
j: 6
5 is odd.
j: 5
// end checkJ

i = 1
j = 4

i: 1
i = 2
j = 4

i: 2
i = 3
j = 4

i: 3
i = 4
j = 4

Các câu lệnh continue không hợp lệ về cú pháp

continue không thể được sử dụng trong vòng lặp vượt qua ranh giới hàm.

js
for (let i = 0; i < 10; i++) {
  (() => {
    continue; // SyntaxError: Illegal continue statement: no surrounding iteration statement
  })();
}

Khi tham chiếu đến nhãn, câu lệnh có nhãn phải chứa câu lệnh continue.

js
label: for (let i = 0; i < 10; i++) {
  console.log(i);
}

for (let i = 0; i < 10; i++) {
  continue label; // SyntaxError: Undefined label 'label'
}

Câu lệnh có nhãn phải là một vòng lặp.

js
label: {
  for (let i = 0; i < 10; i++) {
    continue label; // SyntaxError: Illegal continue statement: 'label' does not denote an iteration statement
  }
}

Thông số kỹ thuật

Specification
ECMAScript® 2027 Language Specification
# sec-continue-statement

Tương thích trình duyệt

Xem thêm