有谁可以解释这里发生的事情?
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)
。任何人都可以解释为什么会这样吗?
答案 0 :(得分:5)
在最后一次检查之前,增量发生。
换句话说,当且仅当i >= 10
时,循环结束,因此在循环结束后,i
必须至少为10。
循环如下:
设置var i = 0;
检查i < 10
(是),执行循环。
执行i++
。
重复步骤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。