生成器函数的调用
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对应的值是可以遍历的,所以可以使用对象的扩展运算符(...)用于取出参数对象的所有可遍历属性,拷贝到数组之中。 生成器实际中很少使用,简单理解即可。
以上是关于生成器函数的调用的主要内容,如果未能解决你的问题,请参考以下文章