for循环容易忽略的一个知识点
前言
前几天看到一位我关注很久的大佬发了关于嵌套for循环中当内循环中符合条件时如何退出外循环的知识讲解。我当时没有在意,觉着直接在内循环中条件判断中
break
不就好了,今天闲来无事,想着测试下看看自己的想法对不对,一番测试之后发现事情并没有这么简单。
示例代码
//定义一个嵌套循环体
for (let i=0;i<10;i++){
for(let j =0;j<5;j++){
if(j==3){
console.log(j)
}
}
}
因为外层循环第一次执行时,内层循环从 j = 0
开始,依次递增,直到 j = 4
。
内层循环执行过程中,当 `j = 3` 时,满足条件 `j == 3`,因此会输出 `3`。
-
外层循环第二次执行时,内层循环再次从
j = 0
开始,依次递增,直到j = 4
。同样,当
j = 3
时,输出3
。 -
这样依次类推,外层循环执行10次,每次内层循环都会输出一次
3
。
因此,总共会输出10次数字 3
。
此时控制台输出结果如下,
停止内循环
如果我想当j=3
时停止内循环,操作如下:
for (let i=0;i<10;i++){
for(let j =0;j<5;j++){
if(j==3){
console.log(j)
break;
}
console.log(j,"aaaaa")
}
}
发现输出结果为
0 aaaaa
1 aaaaa
2 aaaaa
3
.... //十次
通过结果不难发现,使用break;只是停止了内循环,而外循环仍然在执行执行次数为10次。 那有时候在咱们日常开发中,如果我们就想在当内循环中满足了某个条件时想关闭外循环该如何做呢?咱们接着往下看
退出外循环
还是拿上述的例子
//定义for循环的名字,随便写个名字都可
testFor:
for (let i=0;i<10;i++){
for(let j =0;j<5;j++){
if(j==3){
console.log(j)
break testFor;
}
}
}
//执行结果:
3
我们通过上面的代码可知,再break循环时,如果加上for循环的名字,就会将外循环停止,所以结果只输出了一个3
总结
虽然这个知识点很简单,但是在面试过程中很容易忽略在定义for循环的时候可以增加for循环命名的知识点,并且在日常开发工作中,我们有时候也难免会遇到这样的问题。
转载自:https://juejin.cn/post/7384997169171808283