• ES6基础之——生成器Generators


    手共创建迭代器有点麻烦,我们可以使用Generators去生成迭代器,Generators可以翻译成生成器
    先看一下一个简单的生成器,定义一个生成器用的是
    functions* chef(){
      yield 'tomato';
      yield 'eggs';
    }
    let zhangsan=chef();
    

      

    现在zhangsan就是一个迭代器,可以使用next()方法把他返回的东西输出在控制台,结果如下:
    console.log(zhangsan.next()); //{value:'tomato',done:false}
    console.log(zhangsan.next()); //{value:'eggs',done:false}
    console.log(zhangsan.next()); //{value:undefined,done:true}
    下面再改造一下chef生成器:将它接受一个参数,名字为foods,在函数里面使用for循环,每次循环都yield当前循环项
    functions* chef(foods){
    for(var i=0;i<foods.lingth;i++){
      yield foods[i]
    }
    }
    let zhangsan=chef(['tomato','eggs']);
    console.log(zhangsan.next()); //{value:'tomato',done:false}
    console.log(zhangsan.next()); //{value:'eggs',done:false}
    console.log(zhangsan.next()); //{value:undefined,done:true}
    这个生成器也可以使用函数表达的方式创建
    let chef =functions* (foods){
      for(var i=0;i<foods.lingth;i++){
        yield foods[i]
      }
    }
    let zhangsan=chef(['tomato','eggs']);
    console.log(zhangsan.next()); //{value:'tomato',done:false}
    console.log(zhangsan.next()); //{value:'eggs',done:false}
    console.log(zhangsan.next()); //{value:undefined,done:true}
    
  • 相关阅读:
    JS_ECMA基本语法中的几种封装的小函数-1
    DOM_06之定时器、事件、cookie
    DOM_05之DOM、BOM常用对象
    OC数组中文排序
    uiwebview加载中文URL
    ios判断点击的坐标点
    获取字符串在另一个字符串中出现的次数
    NSFileHandle
    NSFileManager
    NSData
  • 原文地址:https://www.cnblogs.com/fe-cherrydlh/p/11112145.html
Copyright © 2020-2023  润新知