sunny-cheng  

Iterator
是一种新的遍历机制,特点
  1.迭代器是一个接口,能快捷的访问数据,通过Symbol.iterator来创建迭代器 通过迭代器的next()获取迭代之后的结果  

  2.对象包含了 value 和 done 两个属性, value 是当前属性的值, done 用于判断是否遍历结束(当 done 为 true 时则遍历结束)
  3.迭代器是用于遍历数据结构的指针(数据库的游标)

栗子

const items = ["zero", "one", "two"];
const it = items[Symbol.iterator]();
 
it.next();
>{value: "zero", done: false}
it.next();
>{value: "one", done: false}
it.next();
>{value: "two", done: false}
it.next();
>{value: undefined, done: true}

可迭代的数据结构

  • Array
  • String
  • Map
  • Set
  • Dom元素(正在进行中)

for...of循环

of 操作数必须是可迭代,这意味着如果是普通对象则无法进行迭代。如果数据结构类似于数组的形式,则可以借助 Array.from() 方法进行转换迭代。

for (let item of arrayLink) {
  console.log(item); // 报 TypeError 异常
}
 
for (let item of Array.from(arrayLink)) {
  console.log(item);
}
// zero
// one

let 、const 和 var 用于 for..of

如果使用 let 和 const ,每次迭代将会创建一个新的存储空间,这可以保证作用域在迭代的内部。

 

posted on 2020-05-29 10:35  sunny-cheng  阅读(182)  评论(0编辑  收藏  举报