for..of 和迭代器状态

2023-12-25

考虑这个Python代码

it = iter([1, 2, 3, 4, 5])

for x in it:
    print x
    if x == 3:
        break

print '---'

for x in it:
    print x

它打印1 2 3 --- 4 5,因为迭代器it记住它在循环中的状态。当我在 JS 中做看似相同的事情时,我得到的只是1 2 3 ---.

function* iter(a) {
    yield* a;
}

it = iter([1, 2, 3, 4, 5])

for (let x of it) {
    console.log(x)
    if (x === 3)
        break
}

console.log('---')

for (let x of it) {
    console.log(x)
}

我缺少什么?


不幸的是,JS 中的生成器对象不可重用。 明确指出MDN https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of#Do_not_reuse_generators

生成器不应重复使用,即使 for...of 循环是 提前终止,例如通过break关键字。退出时 循环,生成器关闭并尝试再次迭代它 不会产生任何进一步的结果。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

for..of 和迭代器状态 的相关文章

  • Javascript 与 Python 关于 Python 'map()' 函数的比较

    Python中有一个函数叫做map这可以让你去 map someFunction x y z 并继续应用该功能的列表 是否有与此功能等效的 JavaScript 我现在刚刚学习Python 虽然我被告知javascript是函数式语言 但我
  • 您可以使用 JavaScript 触发自定义 HTML5 表单错误吗?

    如果我有一个像这样的输入
  • 在javascript中使用“return !0”有什么意义吗?

    如果您转到谷歌结果页面并运行rwt toString 你会看到这个函数的返回调用是 return 0 我想不出任何理由为什么这不会总是如此true 这只是一个简写吗true 还是还有更多事情发生 总是如此 但下载需要 2 个字节 0是 2
  • 如何使用 axios / jest 测试失败的请求

    我创建了一个非常小的应用程序 如果您传递硬币和数量 它可以计算为某些加密货币支付的总价格 我想测试错误 但我总是收到 收到的承诺已解决而不是被拒绝 我相信这是因为如果 url 错误 axios 仍然会解决承诺 我遇到的第二个问题是 我尝试测
  • 通知用户消息仍在输入中

    我正在使用 Laravel 5 6 7 Socket IO 和 vue js 我没有使用 Pusher 和 redis 下面是我的代码 用于向与我一对一聊天的用户发送消息 var url http localhost 6001 apps M
  • 来自 DataURL 的 Blob?

    Using FileReader s readAsDataURL 我可以将任意数据转换为数据 URL 有没有办法将数据 URL 转换回Blob使用内置浏览器 API 的实例 用户 Matt 一年前提出了以下代码 如何在javascript中
  • 零作为 IIFE 中的第一个参数[重复]

    这个问题在这里已经有答案了 In babeljs v6 5 1 class Foo 编译为 use strict var classCallCheck2 require babel runtime helpers classCallChec
  • 是否可以将反应组件导出为非反应项目中的函数

    有没有办法在非 React 项目中将 React 组件导出为函数并传入 props 作为函数的参数 我最近用 create react app 完成了一个 React 项目 现在我想将它用于其他非 React 项目 纯 Javascript
  • 在 JavaScript 中比较表单中的两个数字

    当我尝试比较不同的数字时 数字发生变化 但文本部分保持不变 这只发生在较大 较小的情况下 而不会发生在 NaN 或相等的情况下 这是我的代码 function check var a document getElementById a va
  • 点击问题:动态生成的链接不触发点击功能

    下面是两个代码片段 由于某种原因什么也没有发生 但来自同一个 JS 文件的其他 jQuery 函数在带有 UL 的页面上执行得很好 这是在盯着我看吗 ul class paganation li 1 li li a href 2 a li
  • 专用网络:web3.eth.getAccounts() 始终发送空数组

    我正在运行一个私人以太坊网络 我确实用https aws amazon com blockchain templates 整个设置已经完成 AWS 上的设置看起来正确 现在 我正在尝试创建帐户并检索所有这些帐户 为此 我使用以下方法 Web
  • Web SQL 数据库 + Javascript 循环

    我正在尝试解决这个问题 但我自己似乎无法解决 我正在使用 Web SQL DB 但无法让循环正常使用它 I use for var i 0 i lt numberofArticles 1 i db transaction function
  • 使用 onBlur 事件上的值更新 React 输入文本字段

    我有以下输入字段 在模糊时 该函数调用服务来更新服务器的输入值 完成后 它会更新输入字段 我怎样才能让它发挥作用 我可以理解为什么它不允许我更改字段 但我能做些什么才能使其工作 我无法使用defaultValue因为我会将这些字段更改为其他
  • 将 NPM 包客户端与 nuxt 结合使用

    我对 nuxt 和 javascript 非常陌生 我正在尝试弄清楚如何在客户端使用我的应用程序的依赖项 我将它们列在我的 nuxt config js 中并使用 npm 安装 我也有一个文件 plugins导入它们的目录 不确定这是否好
  • 理论上防止 WebSocket 中第一个收到的消息丢失

    服务器端代码发送消息立即地连接打开后 它向客户端发送初始配置 问候语 以下代码是在客户端 var sock new WebSocket url sock addEventListener error processError sock ad
  • Meteor.js 登录事件

    因此 我对 Meteor 框架和 JavaScript 总体来说还很陌生 但我正在使用该框架开发一个小项目 以尝试让自己达到标准 基本上我正在开发一个微博客网站 目前 用户可以通过多种服务登录 fb google 等 我通过插入所需 url
  • 常规 JavaScript 可以与 jQuery 混合使用吗?

    例如 我可以采用这个脚本 来自 Mozilla 教程 https developer mozilla org en Canvas tutorial Basic usage
  • 有没有办法防止输入 type=“number” 获得多个点值?

    我只想得到十进制值 如 1 5 0 56 等 但它允许多个点 有什么办法可以预防吗 您可以使用pattern属性
  • 如何根据所需表单输入的值更改 CSS 样式

    我想知道如何编写 javascript 来改变所需的表单元素的样式 如果它们有价值的话就改变它们 我想要做的是当所需的文本字段为空时 在它们周围有一个彩色边框 并在它们有值时删除边框样式 我想做的是编写一个 javascript 函数来检查
  • 如何在 JavaScript 中获取浮点数的小数位?

    我想要的是与 Number prototype toPrecision 几乎相反的 这意味着当我有数字时 它有多少位小数 例如 12 3456 getDecimals 4 对于任何想知道如何更快地完成此操作 无需转换为字符串 的人 这里有一

随机推荐

  • 如何使用量角器上传文件

    我正在编写一个需要上传 JPEG 图像的量角器脚本 我可以单击上传按钮 打开 Windows 文件选择器 但是 然后我需要使用量角器在文件选择器对话框中写入文件的路径 但是 我不知道它是如何工作的 我尝试只使用输入路径sendKeys到目前
  • Jasper iReport 表返回空文档,尽管查询有效

    我正在尝试使用 Jasper iReport 4 5 创建报告 并使用表格来显示一些数据 该表由查询填充 当我在查询编辑器中检查查询预览时 我得到了我想要的结果 但是 当我尝试创建报告预览时 我得到的只是 文档没有页面 甚至表头中的静态文本
  • openssl_encrypt 返回 false

    我试图在 PHP 中使用 openssl encrypt 加密字符串 但它一直返回 FALSE encrypted openssl encrypt 1234 AES 256 CBC kGJeGF2hEQ OPENSSL ZERO PADDI
  • TFS构建错误MSB4126(解决方案配置无效)如何修复

    我正在致力于将网站迁移到 Web 项目 我更新了该项目 并且本地一切正常 我已转而构建解决方案而不是项目 但是在构建服务器上构建时 我收到一条错误消息 c agent work 10 s mySolution sln metaproj 0
  • “与 Google 集成”按钮突然消失(收到 404)

    我有 Google Apps Marketplace 应用程序 在其中使用 与 Google 集成 按钮来启动 google OAuth2 流程 由于某种未知原因 该按钮今天消失了 我收到错误 404 https apis google c
  • 如何在Spring Boot中访问GCS存储桶?

    Spring Boot中GCP从GCS存储桶读取文件的配置是什么 您可以自动装配存储类以与存储桶一起使用 CRUD 操作 Autowired private Storage storage public void store InputSt
  • 如何在Python中从XML文件中读取注释文本

    我可以使用 import xml etree ElementTree as et 读取 xml 文件 但我的问题是阅读评论文本数据文件中给出 如何读取 例如在下面的 xml 中 我想阅读基础车辆 is 1997 凯迪拉克卡特拉
  • RSA 中的任何真实世界示例以及 Oracle 中的 ORDS

    我正在使用 ORDS 我将使用 RAS 真正的应用程序安全性 或 VPD 来控制授权 我阅读了 oracle RAS 文档 但没有明白如何将它与 ORDS 没有 apex 一起使用 对于使用 VPD 来说也是如此 我在中创建了用户ords
  • 当 SocketChannel 关闭时如何得到通知?

    我希望在以下情况时收到通知SocketChannel http docs oracle com javase 7 docs api java nio channels SocketChannel html有它的close http docs
  • D3:获取选定元素的边界框

    我的 svg 中有多个元素 我想放大其中之一 我想做同样的事这个例子 http bl ocks org mbostock 9656675但具有非地理路径 就像是 d3 select myElement bounds that I can u
  • pandas 将 NaN 替换为 None 表现出违反直觉的行为

    给定一个系列 s pd Series 1 1 1 2 np nan s 0 1 1 1 1 2 2 NaN dtype float64 如果需要将 NaN 转换为 None 例如 使用镶木地板 那么我希望 0 1 1 1 1 2 2 Non
  • 针对非 IE 浏览器和特定 IE 版本的有效条件注释

    如何使用条件评论来定位 仅限 Internet Explorer 某些 IE 版本 某些 IE 版本和所有其他浏览器 没有IE 只有其他浏览器 以一种验证的方式 validator w3 org http www validator w3
  • Pygame:帧重影?

    我正在使用 pygame 在 python 中开发动画环境 用户绘制每一帧 然后使用 ffmpeg 将动画保存为 avi 电影 我想实现一个功能 但不知道如何 帧重影 就像在绘制当前帧时显示前一帧一样 我尝试创建一个名为ghost当按下下一
  • NSTextView 选择特定行

    我使用的是 Xcode 10 Objective C macOS 而不是 iOS 是否可以以编程方式选择一行NSTextView如果给出行号 无需更改内容的任何属性 只需像用户通过三次单击一样选择它即可 我知道如何按范围获取选定的文本 但这
  • C++ 内存模型和 char 数组上的竞争条件

    基本上我很难理解这一点 来自 Bjarne FAQ 然而 大多数现代处理器无法读取或写入单个 字符 它必须读取或写入整个单词 因此分配给 c 实际上是 读取包含c的单词 替换c部分 然后写 单词又回来了 由于对 b 的赋值类似 因此有 两个
  • 有什么办法可以阻止用户在本地保存文档吗?

    如果用户在我的网站上查看文档 例如代表某些机密信息的 pdf 文件 我是否可以阻止他们在本地保存文档 一句话 不 一旦您将数据发送到他们的浏览器 他们就可以用它做他们想做的事情 您可以使用一些 Flash 组件或 Java Applet 来
  • 如何使用jdbc从db2读取xml列

    假设我在 DB2 中有一个名为 ABC 的表 其中有 2 列 id number content xml String q select from ABC where id 121 Connection conn getConnection
  • 在Android的不同模块中使用不同版本的SO文件(如libc++_shared.so)

    我在应用程序的两个单独的模块中使用两个不同的自定义 aar 库 库附带了许多 so 文件 例如 libc shared so 等 在包含这两个文件后 我收到如下错误 2 files found with path lib arm64 v8a
  • 从另一个 PHP 脚本执行 PHP 脚本

    如何使用 php 手动触发服务器来运行 php 脚本 基本上我有一个相当大的 cronjob 文件 每 2 小时运行一次 但我希望能够自己手动触发该文件 而不必等待它加载 我希望它在服务器端完成 编辑 我想从 php 文件执行该文件 而不是
  • for..of 和迭代器状态

    考虑这个Python代码 it iter 1 2 3 4 5 for x in it print x if x 3 break print for x in it print x 它打印1 2 3 4 5 因为迭代器it记住它在循环中的状态