js 循环有哪些?

js 循环有哪些?

for / for-in / for-of / foreach 专门为循环设计

map / filter ... 虽然代码工作过程中也会产生循环,但是设计的目的不是为了循环对象

for-in

可以循环数组/普通对象。
for-in遍历数组的时候,顺序(序列)是不能保证的,迭代循环得到的是索引/key或原型链找到的属性,循环中可以打断循环或退出循环。
使用for-in进行循环也被称为“枚举”,不但能枚举到数组自身的索引,也能通过原型链枚举到原型对象的属性。
如果数组某一项是空(不是null或undefined,见下面的例子),则不会循环。

Object.prototype.abc = '123'

let arr = [{a: "a"}, "bbb", undefined, , '', 123]
for(let a in arr) {
  console.log(a); // 0 1 2 4 5 abc
}
for(let a in arr) {
  if (arr.hasOwnProperty(a)) {
    if (a === '2') {
      continue;
    }
    console.log(a); // 0 1 4 5
  } else {
    break
  }
}

for-of

包括 Array,Map,Set,String,TypedArray,arguments 对象等等都能迭代。
循环数组的时候,从0开始,按顺序遍历数组,得到的是数组的每一项元素。
循环过程中,可以打断某次循环,或退出循环。
如果数组某一项是空(不是null或undefined,见下面的例子),则会返回undefined。

Object.prototype.abc = '123'
let arr = [{a: "a"}, "bbb", undefined, , '', 123]

for(let val of arr) {
  console.log(val); // {a: "a"}, "bbb", undefined, undefined, '', 123
}
for(let val of arr) {
  if (val === 'bbb') {
    continue;
  }
  else if (val === '') {
    break;
  }
  console.log(val); // {a: "a"}, undefined, undefined
}

打印:


image.png

foreach

只能循环数组。
从0开始,按顺序遍历数组,得到的是数组的每一项元素,除了抛出异常以外,没有办法中止或跳出 forEach() 循环。
如果数组某一项是空(不是null或undefined,见下面的例子),则不会循环。

Object.prototype.abc = '123'
let arr = [{a: "a"}, "bbb", undefined, , '', 123]
arr.forEach(item => {
  console.log(item); // {a: "a"}, "bbb", undefined, '', 123
});

其他

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容