function* gen(x){
var y = yield x + 2;
console.log(typeof y);
return y;
}
var g = gen(1);
g.next() // { value: 3, done: false }
g.next() // undefined { value: undefined, done: true }
我想问的是为什么这里的y没有得到值
我的理解是
第一步g.next()
执行x + 2
第二步 执行 y = x + 2
这里似乎是错了
如果我希望y 可以得到x+2的值应该怎么做呢?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
啥话都不说,看一下执行逻辑。
申明g变量
申明Generator函数gen
g变量赋值gen(1)
g的next
g的next
// ...
想达到效果应该这样写
g.next(1)
, 这样,从yield返回的时候,才会把1返回给y
,就是你想要的过程。g.next()
,这样,yield返回的就是undefined
,y
自然也是undefined
。参见next方法的参数