当前位置:嗨网首页>书籍在线阅读

05-生成器和返回值

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

12.2.2 生成器和返回值

yield 表达式本身并不能让生成器结束,即使它是生成器的最后一个语句。在生成器的任何位置调用 return 都会使 done 的值变为 true ,而 value 的值则是任何被返回的值。例如:

function* abc() {
   yield 'a';
   yield 'b'; 
   return 'c'; 
}
const it = count();
it.next();  // { value: 'a', done: false }
it.next();  // { value: 'b', done: false }
it.next();  // { value: 'c', done: true }

虽然这是正确的行为,但要记住,使用生成器的东西并不总会在意在 donetrue 时的value值。比如,如果在 for…of 循环中用它,那么“c”是不会被打印的。

//将会打印“a”和“b”,但是没有“c”
for(let l of abc()) {
   console.log(l);
    }
建议不要在 `return` 中提供一个对生成器有意义的值。如果想在生成器之外使用某个值,应该用 `yield` ; `return` 应该只被用做提前停止生成器。出于这个原因,通常建议:在生成器中调用 `return` 的时候,不提供返回值。