zoukankan      html  css  js  c++  java
  • 生成器函数的调用

    Q: 
    为啥fn()调用不了函数?而arr=[...fn()]却运行了啊?不是next才行?
    function*fn(){
    
                console.log(1);
    
                yield 1+1;
    
                console.log(2);
    
                yield 2-2;
    
            }
    
            // fn();
    
            const arr=[...fn()];
    
            console.log(arr);
    A:因为function* 这种声明方式(function关键字后跟一个星号)会定义一个生成器函数 (generator function),它返回一个 Generator 对象。所以说调用fn()并不会执行里面的语句,而是需要通过next方法去执行语句,
                //生成器函数的调用
                function* fn(){
                    console.log(1);
                    yield 1+1;
                    console.log(2);
                    yield 2-2;
                }            
                var ge = fn();
                ge.next();
                ge.next();
                //const arr = [...fn()];
                //console.log(arr);
                
    
    
    因为生成器返回对象中, yield对应的值是可以遍历的,所以可以使用对象的扩展运算符(...)用于取出参数对象的所有可遍历属性,拷贝到数组之中。
    
    生成器实际中很少使用,简单理解即可。
  • 相关阅读:
    Codeforces 691A Fashion in Berland
    HDU 5741 Helter Skelter
    HDU 5735 Born Slippy
    HDU 5739 Fantasia
    HDU 5738 Eureka
    HDU 5734 Acperience
    HDU 5742 It's All In The Mind
    POJ Euro Efficiency 1252
    AtCoder Beginner Contest 067 C
    AtCoder Beginner Contest 067 D
  • 原文地址:https://www.cnblogs.com/rickdiculous/p/13200866.html
Copyright © 2011-2022 走看看