对于循环继续,为什么结果数为16?

时间:2019-03-07 11:17:54

标签: javascript

我开始学习编程,在课程的特定部分让我大吃一惊,在关于for循环的继续部分中,我被要求编写此代码的输出:

var sum=0;
for(i=4; i<8; i++) {
if (i == 6) {
continue;
}
sum += i;
}
document.write(sum);

无论出于什么原因,应该等于16,我只是想不明白为什么,谢谢你!

2 个答案:

答案 0 :(得分:10)

让我们遵循它:

  1. sum = 0
  2. 在循环开始时,i = 4
  3. i < 8是对的,因此循环继续进行(是的,此检查从一开始就发生)
  4. 由于i == 6为假,因此continue不会发生
  5. sum += isum设置为4
  6. i++i设置为5
  7. i < 8是正确的,所以循环继续进行
  8. i == 6是错误的,因此continue不会发生
  9. sum += isum设置为9
  10. i++i设置为6
  11. i < 8是正确的,所以循环继续进行
  12. 由于i == 6为真,因此continue继续进行下一个循环迭代,跳过其余循环主体
  13. i++i设置为7
  14. i == 6是错误的,因此continue不会发生
  15. sum += isum设置为16
  16. i++i设置为8
  17. i < 8为假,因此循环停止

步骤#12可能是最有趣的步骤:continue跳过循环主体的其余部分,继续进行下一个循环迭代。有关continue on MDN的更多信息。

将其放入另一种方式:循环将i设置为4,每个循环将i递增一次,并在i < 8期间继续。这意味着在循环体内,i将是4,然后是5,然后是6,然后是7。在循环体中,sum += i会在{{1}时将i添加到sum之外的{em> ,因为i == 6会跳过该部分。因此continue发生在sum += i45中。由于7sum开始,所以0就是0 + 4 + 5 + 7

答案 1 :(得分:0)

这就是下面的循环

  1. 最初sum0
  2. 在第一个循环i(4)之后添加到sum
  3. 在第二个循环中添加了i(5),因此sum成为9
  4. 在第三循环中,sum不会添加任何内容,因为i=6因此,continue语句将在将i添加到sum之前执行。
  5. 最后一个循环i(7)被添加到求和中,结果变为16
  6. 因为循环的条件是i<8,所以最后添加的值是7