可迭代对象,迭代器iterator,生成器generator

这篇博客深入探讨了JavaScript中的迭代器和生成器。迭代器简化了遍历数组或其他可迭代对象的过程,其next()方法返回当前值和状态。生成器则进一步简化了迭代器的创建,允许使用yield语句在函数内部暂停和恢复执行。示例代码展示了如何使用迭代器和生成器遍历数组并观察其工作原理。
摘要由CSDN通过智能技术生成
var colors = ['pink','red','blue'];
for(var i = 0;i++;i<=colors.length){
console.log(colors[i]);
}

----- 为什么使用迭代器?

通过变量i追踪数组colors的索引,虽然简单,但是多个循环执行追踪多个索引就增加难度,所以iterator出现解决这个问题。

------什么是迭代器?

是特殊对象,具有next()方法,每次调用返回结果对象 :两个属性:value(下一个要返回的值),done(bullean),每调用一次next()方法,都返回下一个可用的值。 

-------没有下一个值?

"{value:undefined , done:true}"

--------创建实例

//迭代器源码实现

        function createIterator(items) {
            var i = 0; 
            return {
                next() {
                    var done = (i >= items.length);
                    var value = !done ? items[i] : undefined;
                    i++; //思考一下i++在next()里面
                    return {
                        done, value
                    }
                }
            }
        }

        var iterator = createIterator([1,2,3]);
        console.log(iterator.next());
        console.log(iterator.next());
        console.log(iterator.next());
        console.log(iterator.next());

--------什么是生成器?

让创建迭代器对象的过程变得简单.

通过function关键字后的*表示,函数中会用到yield。

*可以紧挨function,也可以在中间添加空格。 

 //生成器
        function *createIterator(){
            yield 66;
            yield 29;
            yield 3;
        } 
        var iterator = createIterator();
        console.log(iterator.next());
        console.log(iterator.next());
        console.log(iterator.next());

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值