Syntax
Vòng lặp for, while và do while trong JS tương tự C++.
Ngoài ra JS còn có vòng lặp for in và for of:
for inlặp qua các key của đối tượng có thể lặp (object, array).for oflặp qua các value của đối tượng có thể lặp.
Ví dụ 1:
const fruits = ["apple", "orange", "lemon"]
for (let index in fruits) {
console.log(index)
} // 0, 1, 2
for (let fruit of fruits) {
console.log(fruit)
} // "apple", "orange", "lemon"Note
Lý do mà ta có thể dùng vòng lặp
for incho mảng là vì bản chất của một array là một object với các key là các index.
Ví dụ 2:
const champions = {
Annie: {
role: "mage",
lane: "middle",
},
Ahse: {
role: "archer",
lane: "bottom",
},
Aatrox: {
role: "fighter",
lane: "top",
},
}
for (let champion in champions) {
console.log(champion)
} // Annie, Ashe, Aatrox
for (let champion of champions) {
console.log(champion)
} // TypeError: champions is not iterableProblem With the Console
Cho vòng lặp sau:
for (let i = 1; i <= 7; i++) {
for (let j = 1; j <= i; j++) {
console.log("#")
}
}Kết quả:

Nhận thấy rằng, các dấu # liên tục được gom lại thành một dấu duy nhất xuất hiện 28 lần (số 28 phía trước).
Ta có thể sử dụng chuỗi để giải quyết vấn đề này như sau:
let str = ""
for (let i = 1; i <= 7; i++) {
for (let j = 1; j <= i; j++) str += "#"
str += "\n"
}
console.log(str)Labels for break/continue
Trong đoạn code dưới đây, nếu ta dùng từ khóa break ở vòng lặp bên trong thì vòng lặp bên ngoài vẫn sẽ tiếp tục chạy.
for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
let input = prompt(`Value at coords (${i},${j})`, "")
// if an empty string or canceled, then break out
if (!input) break
}
}
alert("Done!")Để break vòng lặp bên ngoài, ta cần dùng label để đặt tên cho nó. Cú pháp:
labelName: for (...) {
...
}Ta break khỏi một vòng lặp nào đó bằng cách dùng từ khóa break kết hợp với tên vòng lặp:
outer: for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
let input = prompt(`Value at coords (${i},${j})`, "")
// If an empty string or canceled, then break out of both loops
if (!input) break outer // (*)
// Do something with the value...
}
}
alert("Done!")Trong đoạn code trên, chương trình sẽ nhảy từ chỗ (*) đến câu lệnh alert.
Chúng ta cũng có thể sử dụng từ khóa continue với label. Khi đó, chương trình sẽ chạy lần lặp tiếp theo của vòng lặp được gán nhãn.
Note
Các label không cho phép “jump” đến bất kỳ nơi nào trong code và chỉ có thể thực hiện break label trong một khối lệnh. sort file.ctime asc