zoukankan      html  css  js  c++  java
  • ES6中generator传参与返回值

    先看两个例子, 

    1,

    function* f() {
      for(var i=0; true; i++) {
        var reset = yield i;
        if(reset) { i = -1; }
      }
    }
    
    var g = f();
    
    document.write(g.next().value) // { value: 0, done: false }
    document.write(g.next().value) // { value: 1, done: false }
    document.write(g.next(true).value) // { value: 0, done: false }
    

    2, 

    function* gen(x){
      try {
        var y = yield x + 2;
      } catch (e){ 
        document.write(e);
      }
      return y;
    }
    
    var g = gen(1);
    g.next();
    g.throw('出错了');
    

    有什么区别?
    第一个里传入了一个true参数, 第二个里传入了一个1参数, 目的都是期望传递给generator.
    但例一演示的参数, 传过去是传给了yield语句本身的返回值, 即reset, 也就是说, 如果你没有传参, 每一次next方法, reset获取的结果都是undefined
    例二中, 方法本身就有入参, 所以千万不要搞错了, 这种入参等于是一个种子, 所以只需要在实例化这个生成器的时候才需要传. 

    区别就在是在生成器里传, 还是在生成器的next方法里传. 前者是给生成器赋种子值, 后者是给每个yield赋返回值

  • 相关阅读:
    Linux上统计文件夹下文件个数
    linux----tail 过滤日志文件中的关键字
    Linux----Makefile
    Python--day 3
    Python--day 2
    Python--day 1
    Ubuntu14.04 64位网易云播放器
    qt 串口通信学习的目录
    qt layout 注意要点
    模拟电子第一章半导体
  • 原文地址:https://www.cnblogs.com/walkerwang/p/5067354.html
Copyright © 2011-2022 走看看