为什么当我在迭代中中断标签时输出此结果

why output this result when I make break to label in iteration?

本文关键字:标签 输出 结果 中断 迭代 为什么      更新时间:2023-09-26

我是javascript的新手,当我学习for statement时,我当然不理解这个输出。

foo: for(var i=0; i<3; i++){                                                                 
    console.log(i);
    if(i==1){
        break foo;
    }   
}

我得到了一些这样的印刷品..

0
1

老实说,我不知道这里发生了什么,我认为这可能会在这里抛出错误,因为可能会导致太深的迭代。

我想得到这个结果

0
1
0
1
0
1
...

也许这是一个愚蠢的问题,但我确实想得到答案。

谁能帮我..

for(var i=0; i<3; i++){                                                                 
    console.log(i);
    if(i==1){
        break foo;
    }   
}

您正在运行从 0 到 3(不包括(迭代的 for loop

在每次迭代中,它print i 的值。

如果 i 的值为 1,则它从循环break

first iteration: i=0; print 0 continue as 0 != 1
second iteration: i=1 print 1 break as 1 == 1

精简更多关于循环

您的循环正在尝试在小于 3 时输出i,并在每次迭代时将其递增 1。

if (i == 1)语句在第二次迭代中true,因此执行break从而"退出"循环。

无限循环就可以了。

var v = 0;
while (true) { // <-- this runs forever!
    console.log(v);
    v ^= 1;
}

或限制为 1000 个循环

var v = 1000;
while (v) {
    out(v % 2);
    v--;
}
// just for dispaying the result
function out(s) {
    var descriptionNode = document.createElement('div');
    descriptionNode.innerHTML = s + '<br>';
    document.getElementById('out').appendChild(descriptionNode);
}
<div id="out"></div>

您的代码执行以下操作:

  • 打印 i
  • 然后打破

它将打印0 1然后断开循环。

  • 实际上,break 语句用于脱离循环。
  • 正如我们之前所知循环循环执行直到条件(此处i<3(为真。 如果条件为假,则当 i 增加到 3 时,它终止。
  • 但是,要检查的 if 条件是i==1因此每当 i 增加到 1 时,for 循环就会被 break 语句终止。
  • 每次将 i 的递增值作为日志打印在浏览器的控制台中时。 直到终止。