美文网首页
js 循环有哪些?

js 循环有哪些?

作者: IamaStupid | 来源:发表于2020-08-17 16:03 被阅读0次

    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
    });
    

    其他

    相关文章

      网友评论

          本文标题:js 循环有哪些?

          本文链接:https://www.haomeiwen.com/subject/ejeqjktx.html