Vòng lặp

Phần này giới thiệu các câu lệnh lặp khác nhau của JavaScript. Các vòng lặp với for, while, do-while, câu lệnh break, continue tương tự như ngôn ngữ C.

Vòng lặp for

Một vòng lặp for lặp lại cho đến khi một điều kiện xác định ước tính thành false. Vòng lặp for của JavaScript cho tương tự như vòng lặp Java và C.

Ví dụ:

1
2
3
4
// in i từ 0 đến 4
for (let i = 0; i < 5; i++) {
  console.log(i);
}

Vòng lặp while

Một vòng lặp while thực thi các câu lệnh cho đến khi điều kiện xác định ước tính là false.

Ví dụ in các số từ 1 đến 4 tương tự vòng for trước:

1
2
3
4
5
let i = 0;
while (i < 5) {
  console.log(i);
  i++;
}

Vòng lặp do…while

Câu lệnh do ... while lặp lại cho đến khi một điều kiện xác định ước tính thành false. Câu lệnh luôn được thực hiện một lần trước khi điều kiện được kiểm tra.
Ví dụ:

1
2
3
4
5
let i = 0;
do {
  console.log(i);
  i++;
} while (i < 5)

Câu lệnh break

Sử dụng câu lệnh break để chấm dứt vòng lặp, chuyển đổi hoặc kết hợp với câu lệnh được gắn nhãn.
Cú pháp câu lệnh break:

1
2
break; // hoặc
break [label];
  1. Dạng đầu tiên của cú pháp chấm dứt vòng lặp (for, while) trong cùng.
  2. Dạng thứ hai của cú pháp chấm dứt câu lệnh được gắn nhãn được chỉ định.

Ví dụ sau in từ 0 đến 4:

1
2
3
4
5
6
7
8
let i = 0;
while (true) { // vòng lặp vô tận
  console.log(i);
  i++;
  if (i == 5) {
    break; // kết thúc vòng lặp
  }
}

Câu lệnh continue

Câu lệnh continue có thể được sử dụng để khởi động lại câu lệnh while, do-while, for hoặc nhãn.
Cú pháp:

1
2
continue; // hoặc
continue [label];

Ví dụ:

1
2
3
4
5
6
7
8
9
// tổng các số lẻ từ 1 đến 9
let sum = 0;
for (let i = 0; i < 10; i++) {
  if (i % 2 === 0) {
    continue;
  }
  sum += i;
}
console.log(sum); // 1 + 3 + 5 + 7 + 9 = 25

Sử dụng nhãn

Một nhãn cung cấp một định danh cho phép tham chiếu tới nó ở nơi khác trong chương trình. Ví dụ: có thể sử dụng nhãn để xác định vòng lặp, sau đó sử dụng câu lệnh break hoặc continue đi tới nhãn đó.

Ví dụ:

1
2
3
4
5
6
7
8
9
let i = 0;
markLoop: // tạo nhãn tên là markLoop
while (true) {
  console.log(i);
  i++;
  if (i === 5) {
    break markLoop;
  }
}