码迷,mamicode.com
首页 > 其他好文 > 详细

生成器函数的调用

时间:2020-06-28 09:53:13      阅读:65      评论:0      收藏:0      [点我收藏+]

标签:需要   log   用不了   调用   UNC   div   简单   console   定义   

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

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

生成器函数的调用

标签:需要   log   用不了   调用   UNC   div   简单   console   定义   

原文地址:https://www.cnblogs.com/rickdiculous/p/13200866.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!