Может ли цикл for увеличиваться/уменьшаться более чем на один?
есть ли другие способы увеличить a for
цикл в Javascript, кроме i++
и ++i
? Например, я хочу увеличить на 3 вместо одного.
for (var i = 0; i < myVar.length; i+3) {
//every three
}
7 ответов
использовать +=
оператор присваивания:
for (var i = 0; i < myVar.length; i += 3) {
технически вы можете поместить любое выражение, которое хотите, в окончательное выражение цикла for, но оно обычно используется для обновления переменной счетчика.
для получения дополнительной информации о каждом шаге цикла for,проверьте статью MDN.
A for
петли:
for(INIT; TEST; ADVANCE) {
BODY
}
означает следующее:
INIT;
while (true) {
if (!TEST)
break;
BODY;
ADVANCE;
}
вы можете написать почти любое выражение для INIT
, TEST
, ADVANCE
и BODY
.
отметим, что ++
операторы и варианты являются операторами с побочными эффектами (следует стараться избегать их, если вы не используете их, как i+=1
и т. п.):
-
++i
означаетi+=1; return i
-
i++
означаетoldI=i; i+=1; return oldI
пример:
> i=0
> [i++, i, ++i, i, i--, i, --i, i]
[0, 1, 2, 2, 2, 1, 0, 0]
ответ Эндрю Уитакера верен, но вы можете использовать любое выражение для любой части.
Просто помните, что второе (среднее) выражение должно оцениваться, чтобы его можно было сравнить с булевым true
или false
.
когда я использую for
цикл, Я думаю об этом как
for (var i = 0; i < 10; ++i) {
/* expression */
}
как
var i = 0;
while( i < 10 ) {
/* expression */
++i;
}
вы, конечно, можете. Другие правильно указали, что вам нужно сделать i += 3
. Вы не можете сделать то, что вы опубликовали, потому что все, что вы делаете здесь, это добавление i + 3
но никогда не назначать результат обратно i
. i++
- это просто сокращение для i = i + 1
аналогично i +=3
это сокращение от i = i + 3
.
for (var i = 0; i < myVar.length; i+=3) {
//every three
}
дополнительные
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
последняя часть тернарного оператора позволяет указать размер шага приращения. Например, i++ означает увеличение на 1. i+=2 такое же, как i=i+2,... так далее. пример:
let val= [];
for (let i = 0; i < 9; i+=2) {
val = val + i+",";
}
console.log(val);
ожидаемые результаты: "2,4,6,8"
" Я " может быть любой плавающей точкой или целое число в зависимости от желаемого размера шага.