星(*)在Koa框架中的JavaScript函数定义中意味着什么?

jsa*_*nen 14 javascript ecmascript-harmony koa

我一直熟悉Koa(http://koajs.com/).许多示例包括星号代替函数名称.例如,在hello world示例中有:

var koa = require('koa');
var app = koa();

app.use(function *(){
  this.body = 'Hello World';
});

app.listen(3000);
Run Code Online (Sandbox Code Playgroud)

这颗星是什么意思?

Ami*_*ich 12

它通常会创建一个"迭代器",因此您可以一次生成一个结果.
类似于C#的yield关键工作.

官方信息

Fibonacci数的"无限"序列(尽管行为约为2 ^ 53):

function* fibonacci() {
    let [prev, curr] = [0, 1];
    for (;;) {
        [prev, curr] = [curr, prev + curr];
        yield curr;
    }
}
Run Code Online (Sandbox Code Playgroud)

生成器可以在循环中迭代:

for (n of fibonacci()) {
    // truncate the sequence at 1000
    if (n > 1000)
        break;


  print(n);
}
Run Code Online (Sandbox Code Playgroud)

生成器是迭代器:

let seq = fibonacci();
print(seq.next()); // 1
print(seq.next()); // 2
print(seq.next()); // 3
print(seq.next()); // 5
print(seq.next()); // 8
Run Code Online (Sandbox Code Playgroud)