zoukankan      html  css  js  c++  java
  • generator生成器iterator遍历器和yield

    generator方法()返回一个iterator

    使用generator时永远先去调用generator()方法

    for of对iterator的调用过程(babel参照)

    1,_iterator.next() 每次循环 调用iterator的next()
    2,var v = _step.value;将next().value赋值给当前项
    babel地址

    var arr=[1,2];
    for(let v of arr){
      console.log(v)
    }
    
    "use strict";
    
    var arr = [1, 2];
    var _iteratorNormalCompletion = true;
    var _didIteratorError = false;
    var _iteratorError = undefined;
    
    try {
      for (var _iterator = arr[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
        var v = _step.value;
    
        console.log(v);
      }
    } catch (err) {
      _didIteratorError = true;
      _iteratorError = err;
    } finally {
      try {
        if (!_iteratorNormalCompletion && _iterator.return) {
          _iterator.return();
        }
      } finally {
        if (_didIteratorError) {
          throw _iteratorError;
        }
      }
    }
    

    yield* 后跟generator(生成器嵌套)

    function * g1(){
    	yield 'a'
    	yield 'b'
    }
    function * g2(){
    	yield 1
    	yield* g1()
    	yield 2
    }
    for(let v of g2()){
    	console.log(v)
    }
    

  • 相关阅读:
    iOS开发之窗口和视图
    GCD
    禁止非法用户登录综合设置
    大数减法(C++实现)
    大数加法(C++实现)
    迷宫问题 (BFS ➕输出路径)
    Pots (BFS ➕ 输出路径)
    Shuffle'm Up (map ➕ BFS)
    Prime Path (BFS)
    速算24点
  • 原文地址:https://www.cnblogs.com/leee/p/7271676.html
Copyright © 2011-2022 走看看