它的输出背后的逻辑是啥?它为 Break 和 continue 提供相同的输出
Posted
技术标签:
【中文标题】它的输出背后的逻辑是啥?它为 Break 和 continue 提供相同的输出【英文标题】:what is the logic behind its output ? Its giving the same output for both Break and continue它的输出背后的逻辑是什么?它为 Break 和 continue 提供相同的输出 【发布时间】:2019-07-04 10:49:07 【问题描述】:首先,我对输出感到困惑?这个输出怎么可能?
我尝试了很多逻辑,但没有得到通用逻辑/
带'break;声明:
for (var i = 2; i <= 8; i++)
if (i == 5)
break;
i++;
console.log(i);
带有“继续”声明:
for (var i = 2; i <= 8; i++)
if (i == 5)
continue;
i++;
console.log(i);
两者的输出相同:3 5 7 9
【问题讨论】:
它计算偶数。你永远不会得到5
。
您的for
递增i
并且您手动递增它。所以你的循环步骤是 2,而不是 1 => 你永远不会到达 5
,只有 4
和 6
。
结果是一样的,因为在检查的时候i
永远不是5
。
【参考方案1】:
由于在块内部和for
语句内部是双倍增量,因此您只能得到偶数进行检查。
// loop 1 2 3 4
// ---- --- --- --- ---
for (var i = 2; i <= 8; i++) // increment 2 4 6 8
console.log('top', i); // always even 2 4 6 8
if (i == 5) // check with even value 2 4 6 8
// continue;
// break
i++; // increment 3 5 7 9
console.log('bot', i); // always odd 3 5 7 9
.as-console-wrapper max-height: 100% !important; top: 0;
【讨论】:
谢谢!那么下面提到的这段代码怎么样,我得到 5 7 9 作为输出,但是由于 continue 语句 for (var i=4; i 不,问题是不是起始值,而是i++;
。条件永远不会是true
,因为i
永远不会是5
。 i
始终是偶数。【参考方案2】:
众所周知,
Continue - continue 语句终止循环中当前迭代的执行。 Break - break 语句完全中断(停止)循环的执行。在这段代码中,
for (var i = 2; i <= 8; i++)
if (i == 5)
break; / continue;
i++;
console.log(i);
您的i
增加了两次,一次是loop
,另一次是loop body
,即手动增加。
在这种情况下,循环会执行以下步骤,
循环迭代 1,
-
i = 2
进入循环并检查,
如果 (i == 5)
休息; / 继续;
//asi=2
这是false,不进入if条件
i
现在增加到 3
console.log(i) //打印 3
检查 i
如果步骤 5 为真,则 i++ //现在 i
增加到 4
循环迭代 2,
进入循环并检查,
如果 (i == 5)
休息; / 继续;
//asi=4
这是false,不进入if条件
i++ // i
现在增加到 5
i
增加到 6
循环迭代 3,
进入循环并检查,
如果 (i == 5)
休息; / 继续;
//asi=6
这是false,不进入if条件
并按照上述步骤继续下一步。
所以最后的结论,
你的两个代码 sn-p 永远不会进入 if 条件,即
if (i == 5)
break; / continue;
因此您的代码永远不会中断/继续。
【讨论】:
以上是关于它的输出背后的逻辑是啥?它为 Break 和 continue 提供相同的输出的主要内容,如果未能解决你的问题,请参考以下文章