起因是我在知乎看到了这个问题,提问者列出了 4 个方法: for forEach map reduce,问大家用的最多的是哪个。
巧了,我哪个都不是,我用 for of。看完了那些回答,我才发觉 for of 怎么比我想象中冷门很多呢?难道是因为它相比 for 算是高级的,相比 forEach 之类算是低级的,所以夹在中间不上不下了?但也许正因为如此,我才喜欢用它,因为它既比 for 简洁,又比 forEach 之类强大(例如可以 break,可以循环执行 await)。
我写了个回答详细说明了一下,感兴趣的话可以看看:
https://www.zhihu.com/question/605580848/answer/3443452329
JavaScript 的循环/遍历方法,你用的最多的是哪个?
在js里的循环语句中,break可以结束循环,continue可以跳过符合条件的本次循环。在有多重循环时,内部循环的break和continue可以结合标签语句来影响外部循环的执行。
var num=0; cc: for (var i = 10; i > 0; i--) { for (var j = 10; j > 0; j--) { if (i==5&&j==5) { break cc; }; num++; }; }; alert(num);//num是55
当满足i==5且j==5时,不仅结束了内部这个循环,还结束了标签为cc的外部循环。如果将break换成continue,num将会是95,因为这一次跳过循环跳过了外部的循环。
js中break和continue结合标签语句使用
我们常常用到for循环。有时候,合适的情况下使用for...in循环可以使得代码更加简洁。
<script type="text/javascript"> var a=['1','2','3','4','5']; for (var i = a.length - 1; i >= 0; i--) { document.write(a[i]); }; for(x in a){document.write(a[x]);} </script>
上面两个循环执行的效果是等价的。但是,for循环的循环方向(i是自增还是自减)是可控的。像上面的代码,for循环将输出"54321",然而for...in是正序输出,它将输出"12345"。
for...in也可以使用break和continue来干预循环操作。
另外,除非是像上面那样很简单的操作,否则不太推荐使用for...in。
js使用for...in遍历数组内的元素
js的循环中可以使用continue跳过本次循环,使用break来跳出整个循环。
<script type="text/javascript"> for (var i = 0; i <= 10; i++) { if (i==5) continue; if (i==9) break; document.write(i+' '); }; </script>
上面的示例中,如果不干预循环操作,那么在页面上将会输出0-10这几个数字。但是干预之后,5不会出现,9和10也不会出现。因为循环到5的时候跳过了本次循环应该执行的操作,而到9的时候,又跳出了循环。
ps:if语句中如果条件后只有一句代码,可以省略花括号。