Có cách nào khác để tăng vòng lặp for
trong Javascript bên cạnh i++
và ++i
không? Ví dụ, tôi muốn tăng thêm 3 thay vì một.Có thể tăng/giảm vòng lặp cho nhiều lần không?
for (var i = 0; i < myVar.length; i+3) {
//every three
}
Có cách nào khác để tăng vòng lặp for
trong Javascript bên cạnh i++
và ++i
không? Ví dụ, tôi muốn tăng thêm 3 thay vì một.Có thể tăng/giảm vòng lặp cho nhiều lần không?
for (var i = 0; i < myVar.length; i+3) {
//every three
}
Sử dụng +=
assignment operator:
for (var i = 0; i < myVar.length; i += 3) {
Về mặt kỹ thuật, bạn có thể đặt bất kỳ biểu hiện bạn muốn trong biểu thức cuối cùng của vòng lặp for, nhưng nó thường được sử dụng để cập nhật các biến điều khiển.
Để biết thêm thông tin về từng bước của vòng lặp for, check out the MDN article.
Cảm ơn các chi tiết - Tôi đã khá chắc chắn có một cách để đưa các biểu thức nâng cao hơn vào khe thứ ba - tôi vừa quên rằng nó cần xác định biến, vì vậy rõ ràng 'i + 3' không hoạt động. – brentonstrine
@brentonstrine: Không có vấn đề gì, vui vì tôi có thể giúp –
for (var i = 0; i < 10; i=i+2) {
// code here
}
hoặc 'cho (var i = 0; i <10; i + = 2)', vì 'i = i + 2' bằng 'i + = 2' – arximughal
Một for
loop:
for(INIT; TEST; ADVANCE) {
BODY
}
có nghĩa như sau:
INIT;
while (true) {
if (!TEST)
break;
BODY;
ADVANCE;
}
Bạn có thể viết hầu như bất kỳ biểu hiện cho INIT
, TEST
, ADVANCE
, và BODY
.
Đừng lưu ý ++
nhà khai thác và các biến thể là nhà khai thác với tác dụng phụ (ta nên cố gắng tránh chúng nếu bạn không sử dụng chúng như i+=1
và những thứ tương tự):
++i
nghĩa i+=1; return i
i++
nghĩa oldI=i; i+=1; return oldI
Ví dụ:
> i=0
> [i++, i, ++i, i, i--, i, --i, i]
[0, 1, 2, 2, 2, 1, 0, 0]
Câu trả lời của Andrew Whitaker là đúng, nhưng bạn có thể sử dụng bất kỳ biểu thức nào cho bất kỳ phần nào.
Chỉ cần nhớ biểu thức thứ hai (giữa) nên đánh giá để nó có thể được so sánh với boolean true
hoặc false
.
Khi tôi sử dụng một for
loop, tôi nghĩ về nó như
for (var i = 0; i < 10; ++i) {
/* expression */
}
như là
var i = 0;
while(i < 10) {
/* expression */
++i;
}
Bạn chắc chắn có thể. Những người khác đã chỉ ra chính xác rằng bạn cần phải làm i += 3
. Bạn không thể làm những gì bạn đã đăng vì tất cả những gì bạn đang làm ở đây là thêm i + 3
nhưng không bao giờ gán kết quả trở lại i
. i++
chỉ là viết tắt của i = i + 1
, tương tự i +=3
là viết tắt của i = i + 3
.
for (var i = 0; i < myVar.length; i+=3) {
//every three
}
thêm
Operator Example Same As
++ X ++ x = x + 1
-- X -- x = x - 1
+= x += y x = x + y
-= x -= y x = x - y
*= x *= y x = x * y
/= x /= y x = x/y
%= x %= y x = x % y
Cant bạn chỉ cần thay i = i + 3 cho số thứ ba? Hay là chỉ trong Java? – CptJesus
Đúng vậy 'i ++' và '++ i' giống như' i + = 1' nếu được sử dụng trong khai báo vòng lặp for, vì vậy 'i + = 3' sẽ hoạt động. – elclanrs
Vòng lặp 'for' không tăng bất cứ thứ gì. Mã của bạn được sử dụng trong câu lệnh 'for'. Nó hoàn toàn tùy thuộc vào bạn như thế nào/nếu/ở đâu/khi bạn muốn sửa đổi 'i' hoặc bất kỳ biến nào khác cho vấn đề đó. –