javascript-返回功能*(){...}是什么意思?

这个问题在这里已有答案:

  • JavaScript中的“功能*”是什么?                                     3个答案

我在Koa看到了一些奇怪的东西。 它具有一些新的函数名称(来自[https://github.com/koajs/koa/blob/master/examples/co.js#L10):]

app.use(function(){
  return function *(){
    var paths = yield fs.readdir('docs');

    var files = yield paths.map(function(path){
      return fs.readFile('docs/' + path, 'utf8');
    });

    this.type = 'markdown';
    this.body = files.join('');
  }
});

return function *()是什么意思? 我们可以在JavaScript中声明名称为*的函数吗?

Afshin Mehrabani asked 2019-10-14T10:59:22Z
2个解决方案
34 votes

这意味着该函数返回一个迭代器(因此可以使用.next()重复调用它以产生更多的值。

查看[http://wingolog.org/archives/2013/05/08/generators-in-v8]了解更多信息

这是一个ES6构造,因此目前您在节点而不是客户端js中看到的更多

benjaminbenben answered 2019-10-14T10:59:47Z
18 votes

Koa利用了称为生成器的JavaScript新功能,而*是在V8中识别生成器的方法。

Luc Morin answered 2019-10-14T11:00:12Z
translate from https://stackoverflow.com:/questions/19833945/what-does-return-function-mean