2012-10-09 77 views
65

除了i++++i之外,是否还有其他方法可以增加Javascript中的for循环?例如,我想增加3而不是1。一个for循环可以递增/递减多于一个吗?

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

广东话你刚刚替补I = I + 3的第三个参数?还是只有在Java? – CptJesus

+1

是的,如果在for循环声明中使用'i ++'和'++ i'就好像'i + = 1',所以'i + = 3'可以工作。 – elclanrs

+1

'for'循环不会增加任何内容。您在'for'语句中使用的代码的确如此。这完全取决于你如何/如果/何地/何时想修改'i'或任何其他变量。 –

回答

144

使用+=assignment operator

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

从技术上讲,你可以把你想在for循环的最终表达的任何表达,但它通常用于更新计数器变量。

有关for循环的每个步骤的更多信息,请参阅check out the MDN article

+0

感谢您的详细信息 - 我确信有一种方法可以将更高级的表达式放入第三个插槽 - 我刚刚忘记了它需要定义变量,因此显然'i + 3'不起作用。 – brentonstrine

+0

@brentonstrine:没问题,很高兴我可以帮到 –

7
for (var i = 0; i < 10; i=i+2) { 
     // code here 
    }​ 
+0

或'for(var i = 0; i <10; i + = 2)',因为'i = i + 2'等于'i + = 2' – arximughal

7

一个for循环:

for(INIT; TEST; ADVANCE) { 
    BODY 
} 

意味着:

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

你可以写上几乎任何表达式INITTESTADVANCEBODY

请注意,++运营商和变形是有副作用的运营商(一个应该尝试,如果你不使用他们喜欢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的回答是真实的,但您可以对任何部分使用任何表达式。
只要记住第二个(中)表达式应该评估,以便它可以与布尔值truefalse比较。

当我使用一个for loop,我认为它是

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 +=3i = i + 3的简写。

0
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