作为任何一种语言的程序员,相信你都用过各种各样的循环语句。最近我在开发的过程中因为for循环遇到了一点堵,所以在这里来梳理一下关于for循环的一些知识点。
最简单的for循环
这是最容易上手的一种循环类型,然后我因为基础知识不够扎实在这里踩了坑。
这是我最原始的代码
res.chip_list = {
{'task_status':0},
{'task_status':0},
{'task_status':0},
{'task_status':0},
{'task_status':0},
}
for (let i = 0; i <= res.chip_list.length; i++) {
if (res.chip_list[i].task_status === 0) {
console.log(`页面去解锁碎片${i + 1}按钮_曝光`)
}
}
我希望得到的结果是整个循环出来只会输出一条数据,某个按钮曝光。但实际的输出是这样的
页面去解锁碎片1按钮_曝光
页面去解锁碎片1按钮_曝光
页面去解锁碎片1按钮_曝光
页面去解锁碎片1按钮_曝光
页面去解锁碎片1按钮_曝光
这是因为for会去遍历每一个i,因为后面的i都是0,所以都会被返回。
那要怎样才可以让它匹配到一个正确就不再往下执行了呢?
为此我尝试了很多方法,最后才知道原来在if里面是有return的,使用return,匹配到立即终止。
for (let i = 0; i <= res.chip_list.length; i++) {
if (res.chip_list[i].task_status === 0) {
console.log(`页面去解锁碎片${i + 1}按钮_曝光`)
return
}
}
这样做在for循环内部输出,似乎已经没什么问题了,但是如果我们在外面看一下呢
for (let i = 0; i <= res.chip_list.length; i++) {
if (res.chip_list[i].task_status === 0) {
console.log(`页面去解锁碎片${i + 1}按钮_曝光`)
return
}
}
console.log(1234)//不会输出
'1234'不会被输出。这是因为for循环在js里面并不是封闭的一块它与外面是直接连通的所以它一旦return后面的代码都不会再执行。
那怎么办呢?for循环里除了有return还有brake和continue呀,brake同样可以打断,而且后面的代码也是可以执行的哟~
for (let i = 0; i <= res.chip_list.length; i++) {
if (res.chip_list[i].task_status === 0) {
console.log(`页面去解锁碎片${i + 1}按钮_曝光`)
brake
}
}
console.log(1234)//1234
我以前在开发的过程中重来没有用过brake这些,这次的坑让我警惕,并去看了一些其他关于for循环的知识。
我在知乎上看到一位大佬总结的很好,这里分享给大家
https://zhuanlan.zhihu.com/p/23812134?utm_source=tuicool&utm_medium=referral