这个段代码什么意思?

来源:3-17 Generator

慕运维5828042

2017-05-04

function* foo(x) {
  var y = 2 * (yield (x + 1));
  var z = yield (y / 3);
  return (x + y + z);
}
var a = foo(5);
a.next() // Object{value:6, done:false}
a.next() // Object{value:NaN, done:false}
a.next() // Object{value:NaN, done:true}

var b = foo(5);
b.next() // { value:6, done:false }
b.next(12) // { value:8, done:false }
b.next(13) // { value:42, done:true }

问一下,a.next()第一次调用时为啥value值是6?

写回答

1回答

快乐动起来呀

2017-05-05

generator函数执行的时候遇到yield或者return暂停,并将紧挨着的表达式返回作为value的值,所以这里返回6是没问题的哈

0
1
mylovef
这里最后一个value为什么是42,能帮忙写一下详细过程吗,谢谢
2017-06-05
共1条回复

ES6零基础教学 解析彩票项目

ES6从零开始,量身设计的迷你案例,让你全面掌握ES6

2579 学习 · 881 问题

查看课程