任何人都可以告诉我为什么即使在失败的迭代中for
循环递增?
for (var n = 0; n <3; n++) {
alert(n); // displays 0 , 1 , 2
}
alert(n); // gives 3
但不应该像
if(condition):
//desired stuff
increment;
else:
exit;
我很少使用迭代变量,我只是在循环完成后将它们抛弃但在this case中发现它是导致错误的原因
答案 0 :(得分:10)
概念上,n++
在循环体的最终语句之后调用,并且在循环体的第一个语句之前评估停止条件。
所以你的代码相当于
for (var n = 0; n < 3; ) {
alert(n);
n++;
}
从这个角度来看,一旦循环存在,n
为3的原因应该是显而易见的。
请注意,在javascript中,n
泄漏了 for
循环。
答案 1 :(得分:2)
for (var n = 0; n <3; n++) {
alert(n);
}
alert(n);
for循环的工作如下 -
首先将n初始化为0;
然后检查条件是否为真,在这种情况下条件为n <3。
在你的代码中,当n = 3条件变为false时。所以n的最终值是3。
答案 2 :(得分:0)
答案 3 :(得分:0)
正如你评论 n 会警告 3 ,这是错误的,因为当 n 2 <时/ strong>,条件将被检查,即 2 <2 将出错,然后它将从循环跳转并提醒 2 而不是 3 。