i ++循环没有任何问题,i + 2无限循环并崩溃

时间:2019-05-05 18:02:50

标签: javascript loops infinite-loop

我想创建一个简单的循环函数,每次循环时加2。但是,即使我告诉我for循环在该数字达到或小于100时停止,它也会超过100并无限循环。

i ++可以正常工作:

function addTwo() {
  for (i = 0; i <= 100; i++) {
    console.log(i);
  }
}

addTwo();

当我将其更改为i + 2时,它会崩溃:

function addTwo() {
  for (i = 0; i <= 100; i + 2) {
    console.log(i);
  }
}

addTwo();

我希望控制台记录: 0 2 4 6 8 ... 100。

但是它无限循环并崩溃。

5 个答案:

答案 0 :(得分:3)

[ERROR] 2019-05-05 12:59:32 [main] ClassA - error [FATAL] 2019-05-05 12:59:32 [main] ClassA - fatal [ERROR] 2019-05-05 12:59:32 [main] foo - Woops an error! 递增i++。但是,i不会更新i+2的值。您应该将其更改为i

i += 2

答案 1 :(得分:3)

i+2对您而言没有任何作用。 JS会对它进行评估,然后对计算出的值不执行任何操作,这意味着i永远不会增加。

++是一个特殊的运算符,它将其前面的变量加1。

要使循环正常工作,您必须将计算i+2的值分配给变量i

for (i=0; i<=100; i = i+2) {
    console.log(i);
}

for (i=0; i<=100; i += 2) {
    console.log(i);
}

答案 2 :(得分:2)

i++i += 1的简写,称为Increment Operator,但是i+2甚至i+1不会增加i的值。您需要通过为i分配新值来增加它。 i = i + 2i += 2

Number是javascript中的原始类型之一,这意味着除非使用赋值运算符=

,否则您将无法对其进行更改。

注意:您没有将letvari一起使用,这会使i成为全局变量。

function addTwo() {
  for (let i = 0; i <= 100; i+=2) {
    console.log(i);
  }
}

addTwo();

答案 3 :(得分:1)

for的第三个参数是final-expression

  

在每次循环迭代结束时要评估的表达式。这发生在下一次条件评估之前。通常用于更新或递增计数器变量。

在您的情况下,您没有为i分配任何值。您应该将其替换为以下内容:

function addTwo() {
  for (i=0; i<=100; i+=2) {
    console.log(i);
  }
}

addTwo();

答案 4 :(得分:0)

for (i = 0; i <= 20; i++) {
    console.log(i);        
     i++;
}

您可以将i增加两次,或者

for (i=0; i<=100; i+=2) {
    console.log(i);
}

您可以使用i + = 2,它将i的值增加2倍并设置i的新值。