麦克聂 2021-10-27 20:35 采纳率: 0%
浏览 17

为什么该generator代码输出是这样的?

function* demo() {
  let data = 1 || (yield 1);
  console.log(data);
  yield 4;
}
const a = demo();
console.log(a.next()); 
console.log(a.next());
//1
//{value:4,done:false}
//{value:undefined,done:false}
  • 写回答

2条回答 默认 最新

  • CSDN专家-showbo 2021-10-27 21:00
    关注

    let data = 1 || (yield 1);
    这里用到||(或)操作符,由于1等价于true,所以后面的yield 1并没有执行生成产出语句,此时data的值为1,继续往下执行log后就打印出1了。

    第一次调用next得到的value是下一句的yield 4

    评论

报告相同问题?

问题事件

  • 创建了问题 10月27日

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置