2016-04-14 205 views
0

为什么此警报显示9但不是5或另一个数字?使用if和break语句循环

for (var i = 0; i < 9; i+=2) 
{ 
    if (++i == 5) break; 
    else continue; 
} 
alert(i++); 
+2

因为您正在循环外调用警报。那时我的价值是9.它永远不会满足你的条件。 –

+0

非常感谢。 – Alexey

回答

0

您正在每个循环多次递增您的索引。

首先传递变量为1,因为您在if块中递增0。

下一个变量的值为3,因为for块中的增量值。

然后在if块你把它从for增量递增到4

然后6。

然后从if增加7。

然后9从for增量和for不再有效并中断。

1

这应该4你如你所愿。

for (var i = 0; i < 9; i+=2) 
{ 
    if (i++ == 5) { 
    alert(i++); 
    }; 
    else continue; 
} 

它会提醒当i值将是4

1

因为你for loop体内的if statement不会进行评估,以true

像下面一样你的代码将被执行。

迭代1

if(1 == 5) //false 

迭代2

if(4 == 5) //false 

迭代3

if(7 == 5) //false 

第三后迭代,i将为9,因此for循环的条件将在此时失败并且循环结束。然后在循环外部,警报将打印i的值为9.

1

这是因为在您的循环中,当if (++i == 5) break检查发生时,我从不5。

在第一次迭代中,我是0.但是,然后你的++i使我变成1,所以在第二次迭代中,我在循环的开始是3。然后++1让我去4,所以在下一次迭代,它跳过了5(因此它永远不会中断),并成为6.

它提醒9,因为当这是我什么时候你的循环已经完成。