微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

es6的迭代器和生成器

迭代器
es6新增的特性,之前没有,其语法借鉴了Python、 Java、 C++。

实现了迭代器接口的类,都可以使用next方法来取元素。

比如:字符串、数组、映射、集合(Set、Map)、arguments 对象、NodeList 等 DOM 集合类型。




表现

const set = new Set();
set.add('共');
set.add('产');
set.add('党');

const setGen = set[Symbol.iterator](); // 取出迭代器:[Symbol.iterator]创建迭代器的工厂函数
const {done,value:fisrstEl} = setGen.next(); // 调用next取出第一个元素 
let hasNext = !done; // 判断有没有元素标识
hasNext &&  console.log(fisrstEl, hasNext);
while(hasNext){
    const {done, value} = setGen.next();
    hasNext = !done;
    hasNext && console.log(value, hasNext);
}

由上可以推断出:检查是否可以迭代 只需要判断是否存在认迭代器属性的工厂函数[Symbol.iterator]即可知道

let num = 1;
let obj = {};
let str = 'abc';
// 这两种类型没有实现迭代器工厂函数
console.log(num[Symbol.iterator]); // undefined
console.log(obj[Symbol.iterator]); // undefined
// 这些类型都实现了迭代器工厂函数
console.log(str[Symbol.iterator]); // f values() { [native code] }

 

自己实现一个迭代器

新消息

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐