为什么此警报显示9但不是5或另一个数字?使用if和break语句循环
for (var i = 0; i < 9; i+=2)
{
if (++i == 5) break;
else continue;
}
alert(i++);
为什么此警报显示9但不是5或另一个数字?使用if和break语句循环
for (var i = 0; i < 9; i+=2)
{
if (++i == 5) break;
else continue;
}
alert(i++);
您正在每个循环多次递增您的索引。
首先传递变量为1,因为您在if
块中递增0。
下一个变量的值为3,因为for
块中的增量值。
然后在if
块你把它从for
增量递增到4
然后6。
然后从if
增加7。
然后9从for
增量和for
不再有效并中断。
这应该4你如你所愿。
for (var i = 0; i < 9; i+=2)
{
if (i++ == 5) {
alert(i++);
};
else continue;
}
它会提醒当i
值将是4
因为你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.
这是因为在您的循环中,当if (++i == 5) break
检查发生时,我从不5。
在第一次迭代中,我是0.但是,然后你的++i
使我变成1,所以在第二次迭代中,我在循环的开始是3。然后++1
让我去4,所以在下一次迭代,它跳过了5(因此它永远不会中断),并成为6.
它提醒9,因为当这是我什么时候你的循环已经完成。
因为您正在循环外调用警报。那时我的价值是9.它永远不会满足你的条件。 –
非常感谢。 – Alexey