使用if和break语句循环[关闭]

问题描述 投票:0回答:5

为什么此警报显示 9 而不是 5 或其他数字?

for (var i = 0; i < 9; i+=2) 
{
   if (++i == 5) break;
   else continue;
}
alert( i++ );
javascript loops if-statement break
5个回答
1
投票

这应该可以如你所期望的那样工作 4。

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

i
值为4时会发出警报。


1
投票

因为你

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。


1
投票

这是因为在你的循环中,当

if (++i == 5) break
检查发生时,i 永远不会是 5。

在第一次迭代中,i 是 0。但是你的

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

它会提醒 9,因为当循环结束时,i 就剩下这个值了。


0
投票

每个循环都会多次增加索引。

第一次传递变量为 1,因为您在

if
块中递增 0。

下一次传递的变量是 3,因为增量器位于

for
块中。

然后在

if
块中将其增加到 4。

然后从

for
增量开始 6。

然后从

if
增量开始 7。

然后

for
增量中的 9 和
for
不再有效并中断。


0
投票
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));
© www.soinside.com 2019 - 2024. All rights reserved.