07,Generator
作者:
r8HZGEmq | 来源:发表于
2020-06-09 23:05 被阅读0次function *foo(x) {
let y = 2 * (yield (x + 1))
let z = yield (y / 3)
return (x + y + z)
}
let it = foo(5)
console.log(it.next()) // => {value: 6, done: false}
console.log(it.next(12)) // => {value: 8, done: false}
console.log(it.next(13)) // => {value: 42, done: true}
解析:
首先 Generator 函数调用和普通函数不同,它会返回一个迭代器
当执行第一次 next 时,5+1=6
当执行第二次 next(12) 时,传入12,覆盖了第一个next的返回值,let y = 2 * 12,
所以第二个 yield 等于 2 * 12 / 3 = 8
当执行第三次 next 时,传入的参数会传递给 z,所以x = 5, y = 24, z = 13
相加等于 42
本文标题:07,Generator
本文链接:https://www.haomeiwen.com/subject/jykytktx.html
网友评论