----關於JS中迭代的三個「FOR」----

for each...in

  使用一個變量迭代一個對象的全部屬性值,對於每個屬性值,有一個指定的語句塊被執行。數組

  一些對象的內置屬性是沒法被遍歷到的,包括全部的內置方法,例如String對象的indexOf方法。不過大部分的用戶自定義屬性都是可遍歷的。函數

  【警告:永遠不要使用  for each...in語句遍歷數組,僅用來遍歷常規對象。(有可能會對數組順序發生改變)】spa

  語法:

    for each (variable in object) {
      statement
    }prototype

  參數:

    variable對象

      用來遍歷屬性值的變量,前面的var關鍵字是可選的。該變量是函數的局部變量而不是語句塊的局部變量。繼承

    objectit

      該對象的屬性值會被遍歷。io

    statementconsole

      遍歷屬性值時執行的語句。 若是想要執行多條語句, 請用({ ... }) 將多條語句括住。變量

  eg:

    var sum = 0;
    var obj = {prop1: 5, prop2: 13, prop3: 8};

    for each (var item in obj) {
    sum += item;
    }

    console.log(sum);

    // output:logs "26", which is 5+13+8

 

 

for...in

  以任意順序遍歷一個對象的可枚舉屬性。對於每一個不一樣的屬性,語句都會被執行。

  for...in 循環只遍歷可枚舉屬性。

  像 Array和 Object使用內置構造函數所建立的對象都會繼承自Object.prototype和String.prototype的不可枚舉屬性。

  語法:

    for (variable in object) {...}

  參數:

    variable

      在每次迭代時,將不一樣的屬性名分配給變量。

    object

      被迭代枚舉其屬性的對象。


  eg:

    var obj = {a: 1, b: 2, c: 3};

    for (const prop in obj) {
    console.log(`obj.${prop} = ${obj[prop]}`);
    }

    // Output:
    // "obj.a = 1"
    // "obj.b = 2"
    // "obj.c = 3"

 

 

for...of

  在可迭代對象(包括 Array,Map,Set,String,TypedArray,arguments 對象等等)上建立一個迭代循環,調用自定義迭代例子,併爲每一個不一樣屬性的值執行語句。

  對於for...of的循環,能夠由break, throw 或return終止。

  語法:

     for (variable of iterable) {
      //statements
      }

  參數:

    variable

      在每次迭代中,將不一樣屬性的值分配給變量。

    iterable

      被迭代枚舉其屬性的對象。

  eg:

    let iterable = [10, 20, 30];

    for (let value of iterable) {
      value += 1;
      console.log(value);
    }


    // 11
    // 21
    // 31

 

-------------------------------------------------------------------------------------------------------------------------------
關於  for...in  和  for...of 之間的區別:

  不管是for...in仍是for...of語句都是迭代一些東西。它們之間的主要區別在於它們的迭代方式。

  for...in 語句以原始插入順序迭代對象的可枚舉屬性。

  for...of 語句遍歷可迭代對象定義要迭代的數據。

相關文章
相關標籤/搜索