Trước tiên, có bao giờ là một chi phí thời gian cho việc sử dụng một vòng lặp for
qua một vòng lặp while
, nhưng bạn sẽ có được chức năng bổ sung với for
vòng lặp, vì vậy một số lập trình viên luôn sử dụng for
:
for(;<condition>;){}
while(<condition>){}
Điều đó nói rằng, tôi nghĩ mục đích ở đây có thể là nhất quán với mã xung quanh.
Ví dụ: đây là một phần của mã gốc. Như bạn có thể thấy, trong mã này bạn có thể ở lại "cho" chế độ vòng lặp suy nghĩ trong suốt thời gian, vì vậy nó cảm thấy nhất quán hơn:
if (args) {
if (isObj) {
for (name in object) {
if (callback.apply(object[name], args) === false) {
break;
}
}
} else {
for (; i < length;) {
if (callback.apply(object[i++], args) === false) {
break;
}
}
}
}
Hãy so sánh này để thay thế cho vòng lặp thứ hai với một while
.Khi bạn đọc mã này, bạn phải chuyển từ chế độ vòng lặp "for" cho chế độ vòng lặp "while" của suy nghĩ. Bây giờ tôi không biết về bạn, nhưng tôi tìm thấy nó nhanh hơn một chút cho đôi mắt của tôi để chuyển đổi giữa các điều kiện vòng lặp ở trên như trái ngược với các điều kiện vòng lặp dưới đây. Điều này là do trong trường hợp trên, chúng tôi chỉ có thể tập trung vào các điều kiện, trong khi trong trường hợp bên dưới mắt tôi bị thu hút vào đọc lại while
và for
mỗi lần, vì họ là khác nhau:
if (args) {
if (isObj) {
for (name in object) {
if (callback.apply(object[name], args) === false) {
break;
}
}
} else {
while (i < length) {
if (callback.apply(object[i++], args) === false) {
break;
}
}
}
}
Tôi tự hỏi liệu mã này có ngắn hơn khi được thu nhỏ không? Đó là mã khủng khiếp, và các nhân viên jQuery là những người thông minh, vì vậy tôi nghĩ rằng đó là vì mục đích rút gọn. –
Xóa tất cả khoảng trắng, phiên bản của @ aroth ngắn hơn. Bất kỳ tên biến nào có thể rút ngắn được sử dụng một số lần bằng nhau. Có thể thậm chí còn ngắn hơn. 'while (i
user113716
Có thể lập luận rằng việc thay thế tất cả các vòng lặp với dạng thức này trong mã được nén nhỏ hơn sẽ tốt hơn. Mặc dù vậy, không biết đó là những gì họ nghĩ đến. –