为什么此警报显示 9 而不是 5 或其他数字?
for (var i = 0; i < 9; i+=2)
{
if (++i == 5) break;
else continue;
}
alert( i++ );
这应该可以如你所期望的那样工作 4。
for (var i = 0; i < 9; i+=2)
{
if (i++ == 5) {
alert(i++);
};
else continue;
}
当
i
值为4时会发出警报。
因为你
if statement
体内的for loop
不会被评估为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
检查发生时,i 永远不会是 5。
在第一次迭代中,i 是 0。但是你的
++i
使 i 变成 1,所以在第二次迭代中,i 在循环开始时是 3。然后 ++1
让我转到 4,所以在下一次迭代中,它会跳过 5(因此它永远不会中断)并变成 6。
它会提醒 9,因为当循环结束时,i 就剩下这个值了。
每个循环都会多次增加索引。
第一次传递变量为 1,因为您在
if
块中递增 0。
下一次传递的变量是 3,因为增量器位于
for
块中。
然后在
if
块中将其增加到 4。
然后从
for
增量开始 6。
然后从
if
增量开始 7。
然后
for
增量中的 9 和 for
不再有效并中断。
let n = 1;
for (var i = 0; i < 9; i += 2)
{
console.log("iteration #" + (n++) + ": i= " + i);
if (++i == 5)
break;
else
continue;
}
console.log("alert "+"i = "+i+ '; ++i = '+(++i));