ES6 在把 JavaScript 中我们熟悉的 for 和 for..in 循环组合起来的基础上,又新增了一个for..of 循环,在迭代器产生的一系列值上循环。

for..of 循环的值必须是一个 iterable,iterable 就是一个能够产生迭代器供循环使用的对象。

我们来对比一下 for..of 和 for..in 以展示其中的区别:

var a = ["a","b","c","d","e"];

for (var idx in a) {

console.log( idx );

}

// 0 1 2 3 4

for (var val of a) {

console.log( val );

}

// "a" "b" "c" "d" "e"

可以看到, for..in 在数组 a 的键 / 索引上循环,而 for..of 在 a 的值上循环

如果不支持ES6语法,可以用以下形式

var a = ["a","b","c","d","e"],

k = Object.keys( a );

for (var val, i = 0; i < k.length; i++) {

val = a[ k[i] ];

console.log( val );

}

// "a" "b" "c" "d" "e"

这里是模拟ES6 但是不是 for..of 的等价代码,也可以用来展示如何手动在迭代器上迭代

var a = ["a","b","c","d","e"];

for (var val, ret, it = a[Symbol.iterator]();

(ret = it.next()) && !ret.done;

) {

val = ret.value;

console.log( val );

}

// "a" "b" "c" "d" "e"

在底层, for..of 循环向 iterable 请求一个迭代器然后反复调用这个迭代器把它产生的值赋给循环迭代变量。

关注我们

长按识别二维码

了解更多

for..of 循环相关推荐

  1. 中兴面试总结,华为。技术,市场

    1,软件测试,如何把这个测试做的更好. 进到一个新项目,作为测试人员应该都是想把测试做好,项目在符合客户质量要求的情况下按时交付的吧.但往往都事与愿违,造成这个结果的原因有很多很多.通过这段时间做自动 ...

  2. Linux shell 学习笔记(9)— 循环语句(for、while)以及更改字段分隔符

    1. for 语句 bash shell 中 for 命令的基本格式如以下,$var 变量包含着这次迭代对应的当前列表项中的值. for var in list docommands done 也可以 ...

  3. 【机器学习】RNN循环神经网络

    循环神经网络归属: 领域:机器学习 方向:自然语言处理 贡献:自动文本生成 循环神经网络实际应用: 生活中因为原始数据都是序列化的,比如自然语言,语音处理,时间序列问题(股票价格)等问题, 这个时候需 ...

  4. MindSpore循环神经网络

    MindSpore循环神经网络 一. 神经网络的组成 神经元模型:首先简单的了解以下构成神经网络的最基础单元:神经元.每个神经元与其它神经元相连,处于激活状态时,就会向相连的神经元发送相应信号.从而改 ...

  5. 循环IRNNv2Layer实现

    循环IRNNv2Layer实现 IRNNv2Layer实现循环层,例如循环神经网络(RNN),门控循环单元(GRU)和长期短期记忆(LSTM).支持的类型为RNN,GRU和LSTM.它执行循环操作,该 ...

  6. CodeGen按钮循环

    CodeGen按钮循环 按钮循环是一个模板文件构造,它允许您迭代CodeGen拥有的按钮信息集合. 在按钮循环中处理的按钮的定义可以来自两个位置之一. 如果基于UI工具箱输入窗口定义进行处理,则默认情 ...

  7. CodeGen标记循环

    CodeGen标记循环 标记循环是一个模板文件构造,它允许您迭代CodeGen拥有的标记信息的集合.为了使用标记循环,必须基于至少定义了一个字段标记的存储库结构生成代码. 标记循环由一对匹配的< ...

  8. CodeGen结构循环回路

    CodeGen结构循环回路 structure循环是一个模板文件构造,它允许您迭代CodeGen拥有的有关结构的集合.为了使用结构循环,必须同时基于多个存储库结构生成代码. CodeGen可以通过以下 ...

  9. CodeGen融合核心关系循环扩展

    CodeGen融合核心关系循环扩展 Expansion Tokens <HARMONYCORE_RELATION_NAME> 插入当前关系的名称.关系名称将自动生成,但可以由Harmony ...

  10. CodeGen字段循环Field Loop

    CodeGen字段循环Field Loop 字段循环是一个模板文件构造,它允许迭代CodeGen拥有的有关字段的集合.这些字段定义可以来自以下两个位置之一: •如果基于从存储库结构中获取的信息生成代码 ...

最新文章

  1. spring boot实战(第七篇)内嵌容器tomcat配置
  2. openCV学习教程(一):Mat类的使用
  3. jpa连接mysql报错_Spring boot jpa mysql 连接数据库SSL错误
  4. 亲自实践Blazor构建桌面应用程序
  5. 【Python笔记】异常处理
  6. Oracle 20c 新特性:表空间缺省加密算法 TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM
  7. 2020-07-02
  8. 谢谢你,阅读了这篇文章
  9. 专业的统计分析软件 IBM SPSS Statistics 26 Mac版(附带安装包网盘资源)
  10. jsoup(java爬虫)
  11. 切底删掉顽固360的.dll文件、删除删不掉的一些文件
  12. go test生成html测试报告
  13. matlab取特征值,matlab提取图像特征值
  14. 如何克服学习过程中的焦虑?
  15. python和按键精灵自动化测试_自动化测试程序和按键精灵
  16. react antd Table 表格 td超出自动换行
  17. ArcGIS 10.2.2支持无损CityGML格式进行3D城市建模
  18. C++ 开发中如何利用sql语句(insert语句)向数据库中插入变量
  19. Python 基础数据结构
  20. 群晖命令行获取root权限

热门文章

  1. 标贝科技推出情感合成 TTS,让语音交互更有温度!
  2. 修复十一个重要高危漏洞 苹果致谢滴滴美研
  3. ​炸裂!万字长文拿下 HTTP 我在字节跳动等你!
  4. 提升研发效能没那么难,看优酷的最佳实践!
  5. 任何性能指标越界或造成 APP 崩溃,优酷通用性能测试一招搞定
  6. 提醒!赶快弃掉这个区块链平台!
  7. Spring 框架之 AOP 原理深度剖析!|CSDN 博文精选
  8. 5G 套餐最快本月开售;谷歌被指骗取人脸数据;Calibre 4.0 发布 | 极客头条
  9. 蚂蚁金服自研数据库打败Oracle拿下世界第一;三星手机全面退出中国;微软发布Windows 10X双屏系统 | 极客头条...
  10. 9 年前他用 1 万个比特币买两个披萨, 9 年后他把当年的代码卖给苹果, 成 GPU 挖矿之父...