生成器函数的调用

Posted rickdiculous

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生成器函数的调用相关的知识,希望对你有一定的参考价值。

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对应的值是可以遍历的,所以可以使用对象的扩展运算符(...)用于取出参数对象的所有可遍历属性,拷贝到数组之中。

生成器实际中很少使用,简单理解即可。

以上是关于生成器函数的调用的主要内容,如果未能解决你的问题,请参考以下文章

13t天 迭代器,生成器,内置函数

生成器函数

生成器函数的调用

cflow——C语言函数调用关系生成器

cflow——C语言函数调用关系生成器

cflow——C语言函数调用关系生成器