当前位置: 首页 > 面试题库 >

first next()调用的参数在哪里?

许奇
2023-03-14
问题内容

我有一个简单的生成器功能

function *generate(arg) {
  console.log(arg)
  for(let i = 0; i < 3;i++) {
    console.log(yield i);
  }
}

然后,我初始化生成器并尝试在控制台中打印值:

var gen = generate('arg'); //doesn't print
gen.next('a'); // prints 'arg'
gen.next('b'); // prints 'b'
gen.next('c'); // prints 'c'
// ... nothing surprising later

a初次next()致电的论点去了哪里?有没有一种在生成器函数中利用它的方法?

这是Babel
REPL
,您可以在其中看到该结果。


问题答案:

next方法定义如下:

25.3.1.2 Generator.prototype.next(value)

next方法执行以下步骤:

  1. 这个 值。
  2. 返回GeneratorResume( gvalue )。

GeneratorResume抽象操作在步骤10 使用

25.3.3.3 GeneratorResume(生成器,值)

具有参数generator和value的抽象操作GeneratorResume执行以下步骤:

  1. 假设 genContext生成器 的[[GeneratorContext]] 内部插槽的值。

  2. 使用NormalCompletion( value )恢复
    genContext 的暂停评估,作为暂停该操作的结果 。令 result
    为恢复的计算返回的值。 __

第一种可能性是通过使用yield(即"suspendedYield"状态)暂停了评估。

其行为在14.4.14运行时语义:评估中进行了说明:

YieldExpressionyield

  1. 返回GeneratorYield(CreateIterResultObject( undefined
    false ))。

(类似于 YieldExpressionyield AssignmentExpression

该GeneratorYieldhtml" target="_blank">抽象操作暂停发生器如下:

  1. 设置 genContext 的代码评估状态,以便当使用Completion
    resumptionValue恢复 评估时,将执行以下步骤:

    1. 返回 resumptionValue
    2. 注意:这返回到最初称为此抽象操作的 YieldExpression 生产的评估。

因此,作为第二个参数传递的值将用作next第一个yield表达式的返回值。作为第三个参数传递的值将用作next第二个yield表达式的返回值。等等。

但是,也有可能发电机尚未启动(即"suspendedStart"状态)。

这是通过GeneratorStart抽象操作完成的:

  1. 设置 genContext 的代码评估状态,以便在对该执行上下文恢复评估时,将执行以下步骤:

但是那些“后续步骤”不使用恢复值。

因此,作为第一个参数传递的值将next被丢弃。



 类似资料:
  • 本文向大家介绍常用的 JVM 调优的参数都有哪些?相关面试题,主要包含被问及常用的 JVM 调优的参数都有哪些?时的应答技巧和注意事项,需要的朋友参考一下 -Xms2g:初始化推大小为 2g; -Xmx2g:堆最大内存为 2g; -XX:NewRatio=4:设置年轻的和老年代的内存比例为 1:4; -XX:SurvivorRatio=8:设置新生代 Eden 和 Survivor 比例为 8:2

  • 如果我想在Keras中使用BatchNormize函数,那么我需要在开始时只调用一次吗? 我阅读了以下文档:http://keras.io/layers/normalization/ 我不知道应该在哪里调用它。下面是我试图使用它的代码: 我这样问是因为如果我用第二行运行代码,包括批处理规范化,如果我不使用第二行运行代码,我会得到类似的输出。因此,要么我没有在正确的位置调用函数,要么我想这没有多大区

  • 我试图掌握神经网络的基础知识,并努力理解keras层。 从tensorflow的教程中获取以下代码: 所以这个网络有3层?第一个只是代表像素值的28*28个节点。第二个是隐藏层,它从第一个节点中获取加权和,应用relu,然后将这些发送到10个输出层,这些输出层被软最大化? 但该模型似乎需要不同的层输入: 为什么输入层现在既有一个input\u形状,又有一个值64?我了解到第一个参数指定了第二层中的

  • 本文向大家介绍BN的参数有哪些?相关面试题,主要包含被问及BN的参数有哪些?时的应答技巧和注意事项,需要的朋友参考一下  

  • 本文向大家介绍addEventListener的参数有哪些?相关面试题,主要包含被问及addEventListener的参数有哪些?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: addEventListener(event, function, useCapture) 其中,event指定事件名;function指定要事件触发时执行的函数;useCapture指定事件是否在捕获或冒泡阶段

  • 我需要使用thymeleaf从html调用一个javascript函数。在这个特定的例子中,我有一个student对象,我需要将这个student对象传递给javascript函数(edit())以便在单击按钮时进行处理。 重要代码段: