美文网首页简单JavaScript
JavaScript:yield表达式的返回值

JavaScript:yield表达式的返回值

作者: 路秋原 | 来源:发表于2018-08-10 21:03 被阅读0次

在阅读本篇之前,你需要先了解生成器(Generator)的基础知识,如果还没有,请阅读JavaScript:生成器(Generator)

先看如下代码:

function* valueOfYield() {
  let value_of_yield = yield 1;
  console.log("value of yield: ", value_of_yield);
}

let it = valueOfYield();
it.next(); // {value: 1, done: false}
// 至此,yield 1被运行,但let value_of_yield = 还没有被 运行
it.next(); // {value: undefined, done: true}
// 至此,函数valueOfYield中的代码全部被运行,console.log输出value of yield: undefined

运行上面代码

我们可以看到,表达式yield 1的返回值为undefined。这里要注意的一点是,yield表达式的返回值与next函数的返回值不同,next函数的返回值与yield之后的值有关,而yield表达式的值却与此无关。例如yield 1的返回值为undefined,而对应的next函数的返回值为1

我们可以从外部改变yield表达式的返回值。请看如下代码:

function* valueOfYield() {
  let value_of_yield = yield 1;
  console.log("value of yield: ", value_of_yield);
}

let it = valueOfYield();
it.next(); // {value: 1, done: false}
// 至此,yield 1被运行,但let value_of_yield = 还没有被 运行
it.next("hello world"); // {value: undefined, done: true}
// 至此,函数valueOfYield中的代码全部被运行,console.log输出value of yield: hello world

运行上面代码

next函数的参数即为上一个yield表达式的返回值。

更多关于生成器(Generator)的探讨请参见:

  1. JavaScript:生成器(Generator)
  2. JavaScript:yield表达式的返回值
  3. JavaScript:生成器(Generator)中的return语句

相关文章

  • 15. Python之yield表达式和生成式

    1 yield表达式的应用 1.1 利用yield返回值给函数体的变量传值 1.2 yield表达式格式生成器 通...

  • JavaScript:yield表达式的返回值

    在阅读本篇之前,你需要先了解生成器(Generator)的基础知识,如果还没有,请阅读JavaScript:生成器...

  • Python协程函数

    在使用装饰器时,在碰到yield时,停止执行,并返回yield的返回值。协程函数可以对yield的返回值进行赋值,...

  • 理解geneartor

    value 值指yield后面 执行后 表达式的值,例如‘hello’ m 是执行后返回的值 即yield+表达式...

  • 【JavaScript】void 0

    void是javascript的关键字,对表达式进行求值,返回值是undefined,所以void 0 === u...

  • 理解Python的协程(Coroutine)

    生成器(Generator)yield表达式的使用生产者和消费者模型yield from表达式 协程(Corout...

  • python中的迭代器

    yield关键字 用法 普通函数: 带有yield关键字的函数: yield将函数的返回值变成了迭代器,其相当于获...

  • Generator

    介绍 (1)遇到yield表达式,就暂停执行后面的操作,并将紧跟在yield后面的那个表达式的值,作为返回的对象的...

  • 8个字记住++i和i++

    ++i和i++的相同点:表达式执行后i最终都会加1 表达式返回值不同:表达式返回值不同:表达式返回值不同:表达式返...

  • with与“上下文管理器”

    先做yield之前的,把返回值给f, 然后执行 f.write部分的内容,,然后执行yield之后的内容

网友评论

    本文标题:JavaScript:yield表达式的返回值

    本文链接:https://www.haomeiwen.com/subject/moxlbftx.html