iterator迭代器的执行原理

99 阅读1分钟

用数组模拟,将数组中的值一个一个拿出来,使用iterator迭代器循环机制

    // 声明一个函数
    function iter(arr){
        // 声明一个变量用来指代数组中的索引
        let idx = 0 ;
        // 返回next方法(Symbol.iterator自带的一个next方法)
        return{
            //定义next方法
            next : () => {
                // 判断读取完毕的条件
                if (idx < arr.length) {
                    return {value:arr[idx++],done:false}
                } else {
                    return {value:undefined,done:true}
                }
            }
        }
    }
    let arr = [6,1,2,3,5,7];
    let iterator = iter(arr);
    // 执行调用函数中的方法,并打印输出验证结果
    console.log(iterator.next())//此时是执行一次的结果,输出为6
    ...
    console.log(iterator.next())//输出完毕,输出{value:undefined,done:true}