for循环的奇怪行为

Vin*_*ney 3 javascript for-loop

任何人都可以告诉我为什么for即使在失败的迭代中循环增量?

for (var n = 0; n <3; n++) {
     alert(n);                  // displays 0 , 1 , 2 
}
alert(n); // gives 3 
Run Code Online (Sandbox Code Playgroud)

但不应该这样

if(condition):
    //desired stuff
    increment;
else:
    exit;
Run Code Online (Sandbox Code Playgroud)

我很少使用迭代变量,我只是在循环完成后抛弃它们但在这种情况下发现它是导致bug的原因

Bat*_*eba 10

概念性地n++在循环体的最终语句之后调用,并且在循环体的第一个语句之前评估停止条件.

所以你的代码相当于

for (var n = 0; n < 3; ) {
     alert(n);
     n++;
}
Run Code Online (Sandbox Code Playgroud)

从这个角度来看,n一旦循环存在,原因就是3应该是显而易见的.

请注意,在javascript中,n 漏出for循环.