8. Các cấu trúc điều khiển
8.3. Cấu trúc lặp for
Vòng lặp for sẽ thực hiện lặp đi lặp lại khối lệnh cho đến khi điều kiện là false. Số lần thực hiện của vòng lặp thường được điều khiển thông qua một biến đếm.
Cú pháp
for(giá_trị_khởi_tạo; biểu_thức_logic; biểu_thức_thay_đổi_giá_trị) {
Khối lệnh;
}
Trong đó:
- giá_trị_khởi_tạo: biểu thức khởi tạo, được thực hiện duy nhất một lần và thường dùng để khởi tạo biến đếm.
- biểu_thức_logic: điều kiện của vòng lặp.
- biểu_thức_thay_đổi_giá_trị: biểu thức thay đổi giá trị biến đếm của vòng lặp.
Vòng lặp for thi hành như sau:
i. Khởi tạo biểu thức giá_trị_khởi_tạo, nếu thành công thì vòng lặp được thi hành. Biểu thức này thường dùng để khởi tạo một hoặc nhiều bộ đếm của vòng lặp, và cú pháp cho phép một biểu thức có bất kỳ độ phức tạp nào. Biểu thức này có thể cũng khai báo các biến.
ii. Biểu_thức_logic được tính toán tại mỗi vòng thực hiện. Nếu giá trị của biểu_thức_logic là true, thì các câu lệnh t r o n g k h ố i l ệ n h của vòng lặp thi hành. Nếu giá trị của biểu_thức_logic là false thì thoát khỏi vòng lặp. Nếu bỏ qua hoàn toàn biểu_thức_logic thì điều kiện luôn được thừa nhận là true.
iii. Thực thi khối lệnh.
iv. Cập nhật biểu_thức_thay_đổi_giá_trị, và trở về bước ii.
Ví dụ: Tính tổng các số từ 0 đến 9, sử dụng vòng lặp for.
tong = 0;
for (var i = 0; i <= 9; i++) { tong += i;
}
Trong vòng lặp for, ta có thể sử dụng nhiều biểu thức khởi tạo hay biểu thức thay đổi giá trị cho biến đếm được phân cách bởi dấu ,
Ví dụ: viết lại ví dụ ở trên, tính tổng các số từ 0 đến 9, sử dụng vòng lặp for.
for (var i = 0, tong = 0; i <= 9; i++) { tong += i;
}
Ngoài cấu trúc lặp for như ở trên, JavaScript còn cung cấp cấu trúc for…in và with để thao tác trên các đối tượng. Cấu trúc for…in lặp đi lặp lại một biến chỉ định trên tất cả các thuộc tính của một đối tượng. Với mỗi thuộc tính riêng, JavaScript thực thi các câu lệnh có thể.
Cú pháp
for (variable in object) {
Khối lệnh;
}
Ví dụ: sử dụng câu lệnh for…in để thao tác trên mỗi phần tử của mảng.
var a = new Array("An","Bình","Châu") for(var i in a){
document.write(a[i] + "<br />"); }