1. 程式人生 > >【ES6】for of用法

【ES6】for of用法

一、使用例子

使用例子(一)

  1. var arr = ['nick','freddy','mike','james'];

  2. for(var item of arr){

  3. console.log(item);

  4. }

輸出結果:

輸出的是數組裡面的值。

二、使用例子(二)

  1. var arr = [

  2. { name:'nick', age:18 },

  3. { name:'freddy', age:24 },

  4. { name:'mike', age:26 },

  5. { name:'james', age:34 }

  6. ];

  7. for(var item of arr){

  8. console.log(item.name,item.age);

  9. }

輸出結果:

二、與for in 區別

區別①:for of無法迴圈遍歷物件

  1. var userMsg = {

  2. nick: {

  3. name: 'nick',

  4. age: 18,

  5. sex: '男'

  6. },

  7. freddy: {

  8. name: 'freddy',

  9. age: 24,

  10. sex: '男'

  11. }

  12. };

  13. for(var i1 in userMsg){

  14. console.log(i1);

  15. for(var i2 in userMsg[i1]){

  16. console.log(i2+': '+userMsg[i1][i2]);

  17. }

  18. }

  19. console.log('-----------分割線-----------');

  20. for(var item of userMsg){

  21. console.log(item);

  22. }

輸出結果:

區別②:遍歷輸出結果不同

  1. var arr = ['nick','freddy','mike','james'];

  2. for(var i in arr){

  3. console.log(i);

  4. }

  5. console.log('-----------分割線-----------');

  6. for(var item of arr){

  7. console.log(item);

  8. }

輸入結果:

不難看出,for in迴圈遍歷的是陣列的鍵值(索引),而for of迴圈遍歷的是陣列的值。

區別③:for in 遍歷定義屬性,for of不會

  1. var arr = ['nick','freddy','mike','james'];

  2. arr.name = "陣列";

  3. for(var i in arr){

  4. console.log(i+': '+arr[i]);

  5. }

  6. console.log('-----------分割線-----------');

  7. for(var item of arr){

  8. console.log(item);

  9. }

輸入結果:

給陣列新增一個自定義屬性name,並且賦值"陣列"。然後進行遍歷輸出的,會發現新定義的屬性也被for in輸出來了,而for of並不會對name進行輸出。