代码请教
来源:2-56 Syntax(1)

Bizarre_Lion
2019-12-03
function * gen(){
let val
val = yield [1,2,3]
console.log(val)
}
const l = gen()
l.next()
l.next()
这章节听得我模模糊糊晕头转向 ,老师你说第一次 next 执行是遇到 yield 停止,第一次的值 为 空
第二次 执行 的时候 没有 yield 了,是不是 会把 yield 后面的数组返回给 val console.log(val) 输出应该是 数组呀 ?为啥是undefined ?
写回答
2回答
-
薇笑的夏娃
2019-12-26
var foo = yield expression 语句,yield 左侧变量 foo 的值将在下一次调用 next() 方法时获得,并且等于调用时 next() 方法的参数。
function * gen(){ let val val = yield [1,2,3] // 第一次调用next(),运算 yield[1,2,3],返回的是个对象{value:[1,2,3],done:false // 此时只运算量yield表达式,并没有将yield表达式的值即调用next()后的值赋值给val console.log(val) // 第二次调用next()方法时,会将next()的参数赋值给val,代码中next()并没有传递参数, // 所以输出val是undefined // 若是在调用第二个next(666)传递一个参数666,就会发现console.log(val)的输出是666了 } const l = gen() l.next() l.next()
30 -
快乐动起来呀
2019-12-05
你在控制台看下第一个 l.next() 的输出是什么,是一个对象,这个对象有两个属性分别是value:[1,2,3],done:false,没有问题啊。第二个 l.next() 因为没有遇到 yield 就执行结束了,所以是 {value: undefined, done: true},有什么问题呢?
10
相似问题