// ( A ) ( B ) (C)
for (var i=0; i < Things.length; i++) {
Things[i]
};
- Một được thực hiện một lần trước khi vòng lặp khởi động.
- B được đánh giá lại trước mỗi lần lặp, và nếu đó là không đúng sự thật, nó ra khỏi vòng lặp (do đó nó sẽ kiểm tra các thuộc tính length của
Things
trên mỗi iteration duy nhất.)
- C được thực hiện sau mỗi lần lặp lại
Điều đó nói rằng, hiệu suất bạn nhận được từ việc thay đổi vòng lặp là tối thiểu, do đó bạn có thể đọc được những điều bạn thấy dễ đọc nhất. e-wise.
Điều này có thể có ý nghĩa hơn cho bạn:
for (var i=0; i < Things.length; i++) {
Things[i] = null;
};
có thể được viết lại như sau:
var i = 0; //A
while (true) {
if (!(i < Things.length)) { //B - We check the length all the time
break;
}
Things[i] = null;
i++; //C
}
và
for (var i = Things.length - 1; i >= 0; i--){
Things[i] = null;
};
có thể được viết lại như sau :
var i = Things.length - 1; //A - We only check the length once
while (true) {
if (!(i >= 0)) { //B
break;
}
Things[i] = null;
i--; //C
}
Vì không yêu cầu truy cập thuộc tính độ dài mỗi lần. Trong phần sau, 'for' initialisation chỉ được thực hiện một lần. BTW, hầu hết mọi người vẫn thích cái đầu tiên để dễ đọc. –
trùng lặp chính xác của [JavaScript - Các vòng lặp thực sự có đảo ngược nhanh hơn không ...?] (Http://stackoverflow.com/questions/1340589/javascript-are-loops-really-faster-in-reverse) Vui lòng tìm kiếm chính bạn ngay từ đầu - và câu hỏi đó là # 1 trong thanh bên "Liên quan" – Bergi
@ cPu1 Hoặc đơn giản là vì họ không muốn lặp lại mảng của họ ngược ... – totymedli