for of、for in、forEach
以下总结了关于for of、for in、forEach的理解,个人拙见,凡有不恰当之处,欢迎留言,互相学习!
- forEach:定义:用于调用数组的每个元素,并将元素传递给回调函数
- 缺点:
- 不能同时遍历多个集合,在遍历的时候无法修改和删除集合数据
- 方法不能使用break,continue语句跳出循环,或者使用return从函数体返回
- 对于空数组不会执行回调函数
- 优点:便利的时候更加简洁,效率和for循环相同,不用关心集合下标的问题,减少了出错的效率
- for in:定义:用于循环遍历数组或对象属性,for in循环里面的index是string类型的,代码每执行一次,就会对数组的元素和属性或者对象的属性进行一次操作
- 缺点:
- 某些情况下,会出现随机顺序的遍历,
- 因为里面的值是string类型,所以增加了转换过程,因此开销较大
- 原型上的属性也会被遍历到,需要添加自身属性判断
- 优点:可以遍历数组的键名,遍历对象简洁方便
- for of:定义:(可遍历map,array,set string等)用来遍历可迭代对象(迭代具有iterator接口的可迭代对象),遍历对象可通过转化为数组(Object.keys或Object.values)
- 优点:
- 避免了for in的所有缺点,可以使用break,continue和return,
- 不仅支持数组的遍历,还可以遍历类似数组的对象,支持字符串的遍历最简洁,最直 接的遍历数组的语法支持map和Set对象遍历
- 缺点:
- 不适用于处理原有的原生对象(原生对象是一个子集,包含一些在运动 过程中动态创建的对象)