JS中的forEach,for in,for of和for的遍历优缺点及区别

JavaScript010

JS中的forEach,for in,for of和for的遍历优缺点及区别,第1张

优点: 遍历的时候更加简洁,效率和for循环相同,不用关心集合下标的问题,减少出错的效率

缺点: 不能同时遍历多个集合,在遍历的时候无法修改和删除集合数据,方法不能使用break,continue语句跳出循环,或者使用return从函数体返回,对于空数组不会执行回调函数

forEach不可遍历对象,这也是和for in的区别

优点: 可以遍历数组的键名,遍历对象简洁方便

缺点: 某些情况下,会出现随机顺序的遍历,因为里面的值是string类型,所以增加了转换过程,因此开销比较大

优点: 避免了for in的所有缺点,可以使用break,continue和return,不仅支持数组的遍历,还可以遍历类似数组的对象,支持字符串的遍历,最直接的遍历数组的语法,支持map和set对象遍历

缺点: 不适用于处理原有的原生对象

优点: 程序简洁,结构清晰,循环初始化,循环变量化,循环体和循环条件位置突出

缺点: 结构比while循环复杂,容易出编码错误

js没有foreach语句,类似功能的语句是for...of,用法是:

for(var 属性值 of 对象名)。

例如:

<script type="text/javascript">

var o=[1,2,3,4]

for(var v of o)

{

document.write(""+v+"<br />")

}

</script>

forEach本质上是不可终止的,如果非要终止的话建议使用其他循环方法。不要强行使用forEach,避免出现不必要的bug。但如果一定要终止forEach可以参考以下方法

1.使用try catch 抛出错误达到终止循环的效果

2.因为forEach有遇到空数组不会执行回调函数的特性,所以还可以在循环途中将数组置空达到终止循环的目的