循环完成运行后,在循环外返回意外值

时间:2015-12-02 17:22:19

标签: javascript

有谁可以解释这里发生的事情?

for (var i = 0; i < 10; i++) {
  /* ... */
}
console.log(i);

//expect 9 as loop states i < 10, however it shows 10

我希望在记录i时它会显示值9.根据我的理解,循环将从0-9开始,然后在循环表明{{1}时停止}。但是,当我i < 10时,它会显示console.log(i)。任何人都可以解释为什么会这样吗?

4 个答案:

答案 0 :(得分:5)

在最后一次检查之前,增量发生

换句话说,当且仅当i >= 10时,循环结束,因此在循环结束后,i必须至少为10。

循环如下:

  1. 设置var i = 0;

  2. 检查i < 10(是),执行循环。

  3. 执行i++

  4. 重复步骤2和3,直到i < 10为假(在这种情况下,直到i = 10)。

答案 1 :(得分:1)

你有什么,

for (var i = 0; i < 10; i++) {
    /* ... */
}
console.log(i); // logs 10

可以重写为while

var i = 0;
while (i < 10) {
    /* ... */
    i++;
}
console.log(i); // logs 10

现在我们看到在i === 9的末尾有一个最后一个增量i === 10,导致条件失败从而退出循环。

答案 2 :(得分:0)

因为当不小于10时循环退出。i == 10

以下for循环的操作顺序:

for(a;b;c) {
    d;
}

这是:

A, repeat(b, d, c) while b==true

调用的最后一个语句是b。这意味着b之前的语句为c

答案 3 :(得分:0)

循环运行直到i = 10,然后停止。然后你控制台记录10。