for循环可以增加/减少一个以上吗?


118

for除了i++和之外,还有其他方法可以增加Javascript中的循环++i吗?例如,我想增加3而不是1。

for (var i = 0; i < myVar.length; i+3) {
   //every three
}

4
不能只将第三个参数用i = i + 3代替吗?还是仅在Java中?
CptJesus 2012年

1
是的,这很好i++++i就像i+=1在for循环声明中使用它一样,i+=3它将起作用。
elclanrs 2012年

1
for环不增加任何东西。您的for语句中使用的代码可以。完全由您决定如何/是否/在何处/何时修改,i或任何其他变量。
我讨厌懒惰的2012年

2
那不是for循环,而是无限循环。你是说i+=3
ninjagecko 2012年

2
我知道这是一个具有简单解决方案的简单问题,但是拒绝投票的原因是什么?我很确定这不是重复的。
brentonstrine 2012年

Answers:


252

使用+= 赋值运算符

for (var i = 0; i < myVar.length; i += 3) {

从技术上讲,您可以将所需的任何表达式放在for循环的最终表达式中,但通常用于更新计数器变量。

有关for循环的每个步骤的更多信息,请参阅MDN文章


感谢您提供的详细信息-我非常确定有办法将更多高级表达式放入第三个位置-我只是忘记了它需要定义变量,因此显然i+3行不通。
brentonstrine 2012年

@brentonstrine:没问题,很高兴我能帮助
安德鲁·惠特克

当我们这样做时,造成无限循环的原因是什么i+3
Sanjay Shr,

1
@SanjayShr i+3不会改变的价值i
Nahid

@Nahid是的,我评论了我的答案。Thanx
Sanjay Shr,

13

for环:

for(INIT; TEST; ADVANCE) {
    BODY
}

表示以下内容:

INIT;
while (true) {
    if (!TEST)
        break;
    BODY;
    ADVANCE;
}

你可以写几乎所有的表达式INITTESTADVANCE,和BODY

请注意,++运算符和变体是具有副作用的运算符(如果您未像like这样使用它们,则应尽量避免使用它们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]


5

安德鲁·惠特克(Andrew Whitaker)的回答是正确的,但您可以在任何部分使用任何表达式。
只要记住第二个(中间)表达式应该求值,就可以将其与布尔值true或进行比较false

当我使用for循环时,我认为它是

for (var i = 0; i < 10; ++i) {
    /* expression */
}

作为

var i = 0;
while( i < 10 ) {
    /* expression */
    ++i;
}

1

当然可以。其他人正确地指出了您需要做的事情i += 3。您无法执行已发布的内容,因为您在此处所做的只是添加i + 3但从未将结果分配回ii++是的简写i = i + 1,同样i +=3是的简写i = i + 3


1
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

-1

三元运算符的最后一部分允许您指定增量步长。例如,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”

“ i”可以是任何浮点数或整数,具体取决于所需的步长。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.