for-of是在ES6一个新的循环,取代了for-in和forEach()循环。

使用它循环可迭代的对象,Array,Map,Set,String,TypedArray,函数的 arguments 对象NodeList 对象

const iterable = ['a', 'b'];

for (const x of iterable) {
   console.log(x);

}

// a b

break或continue在for-of循环内也可以使用:

for (const x of ['a', '', 'b']) {
   if (x.length === 0) break;
   console.log(x);

}

// a

在循环访问数组时,访问这个元素及其索引(of之前的方括号表示我们正在使用解构):

const arr = ['a', 'b'];

for (const [index, element] of arr.entries()) {
   console.log(`${index}. ${element}`);

}

//  0 a 1 b

该of子句的操作数必须是可迭代的。这意味着如果您想要遍历普通对象则需要辅助函数。如果值是类似于数组的,可以通过Array.from()以下方式将其转换为数组:

const arrayLike = { length: 2, 0: 'a', 1: 'b' };

for (const x of arrayLike) { // TypeError

console.log(x);

}

for (const x of Array.from(arrayLike)) { // OK
   console.log(x);

}

如果用const声明迭代变量,则将为每次迭代创建新的引用(存储空间)。这可以在下面的代码片段中看到,我们elem通过箭头函数保存当前的引用。之后,您可以看到箭头功能不共享相同的引用elem,它们都有不同的引用。

const arr = [];

for (const elem of [0, 1, 2]) {
   arr.push(() => elem);

}

console.log(arr.map(f => f())); // [0, 1, 2]

如果你var声明了迭代变量,那么看看情况是不同的。现在所有的箭头函数都指向相同的引用elem。

const arr = [];

for (var elem of [0, 1, 2]) {
   arr.push(() => elem);

}

console.log(arr.map(f => f())); // [2, 2, 2]

我们只看到for-of声明一个迭代的变量,迭代变量也可以是现有的变量,对象属性和数组元素。

你可以迭代一个现有的变量:

let x;

for (x of ['a', 'b']) {
   console.log(x);

}

你也可以迭代一个对象属性:

const obj = {};

for (obj.prop of ['a', 'b']) {
   console.log(obj.prop);

}

你可以迭代一个数组元素:

const arr = [];

for (arr[0] of ['a', 'b']) {
   console.log(arr[0]);

}

介绍for-of循环相关推荐

  1. .NET并行编程实践(一:.NET并行计算基本介绍、并行循环使用模式)

    阅读目录: 1.开篇介绍 2.NET并行计算基本介绍 3.并行循环使用模式 3.1并行For循环 3.2并行ForEach循环 3.3并行LINQ(PLINQ) 1]开篇介绍 最近这几天在捣鼓并行计算 ...

  2. EXCEL技能点4——介绍Vlookup与循环引用

    1 Vlookup函数的介绍 ​ VLOOKUP函数是Excel中的一个纵向查找函数,它与LOOKUP函数和HLOOKUP函数属于一类函数,在工作中都有广泛应用,例如可以用来核对数据,多个表格之间快速 ...

  3. 1-Python介绍-判断和循环语句

  4. 判断三角形java代码_小猿圈Java循环嵌套语法的使用介绍

    Java是一直被程序员使用的程序之一,而且应用也是最广泛的一个,很多应用中都会用得到,小猿圈java讲师就为你介绍一下Java循环嵌套语法的使用介绍,希望对你有所帮助. 嵌套循环是指在一个循环语句的循 ...

  5. YJango的循环神经网络——实现LSTM YJango的循环神经网络——实现LSTM YJango YJango 7 个月前 介绍 描述最常用的RNN实现方式:Long-Short Term Me

    YJango的循环神经网络--实现LSTM YJango 7 个月前 介绍 描述最常用的RNN实现方式:Long-Short Term Memory(LSTM) 梯度消失和梯度爆炸 网络回忆:在< ...

  6. java while语句打印三角形_小猿圈Java循环嵌套语法的使用介绍

    Java是一直被程序员使用的程序之一,而且应用也是最广泛的一个,很多应用中都会用得到,小猿圈java讲师就为你介绍一下Java循环嵌套语法的使用介绍,希望对你有所帮助. 嵌套循环是指在一个循环语句的循 ...

  7. MindSpore循环神经网络

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

  8. 14.parfor并行循环处理

    FPGA教程目录 MATLAB教程目录 -------------------------------------------------------------------------------- ...

  9. for循环java_java的这三种for循环有什么区别?

    展开全部 J2SE 1.5提供了另一种形式的for循环.借助这种形式的for循环,可以用更简单地方式来62616964757a686964616fe59b9ee7ad9431333332633034遍 ...

  10. Python基础教程(四):循环语句

    Python 循环语句 本章节将向大家介绍Python的循环语句,程序在一般情况下是按顺序执行的. 编程语言提供了各种控制结构,允许更复杂的执行路径. 循环语句允许我们执行一个语句或语句组多次,下面是 ...

最新文章

  1. android升级gradle到3.4.1
  2. 快速优雅的为React组件生成文档
  3. webservice axis1.4生成客户端
  4. 互斥锁、自旋锁和自适应自旋锁
  5. vue适配移动端px自动转化为rem
  6. 最新版python学习_最全Python学习路线图【2020最新版】
  7. 【COCOS2DX隐藏IOS7状态栏】通过添加PLIST KEY隐藏IOS7状态栏
  8. 函数04 - 零基础入门学习C语言35
  9. 面试官:什么是JDK什么是JRE?服务器可以只安装JRE吗?
  10. 条款01:视C++为一个语言联邦
  11. python中实现多路分支的最佳控制结构是_哪个选项是实现多路分支的最佳控制结构? (1.3分)_学小易找答案...
  12. C# sqlDataReader区别Dataset
  13. Keil MDK5解决error: L6002U: Could not open file …\obj\main.o: No such file or directory
  14. Roundcube开启用户自助更改密码功能
  15. 思科模拟器交换机的几种配置模式
  16. [雪峰磁针石博客]python3标准库-中文版2:内置函数
  17. 什么是IP65?仅仅是防水等级吗?看完本文直呼666!
  18. 新装的mysql数据库默认密码是多少_数据库的设置及其初始密码
  19. html / CSS 自定义字体font 自己设置好看的特效字体
  20. paddle百度飞浆入门使用教程

热门文章

  1. 把核心代码全开源,还能做出卡别人脖子的产品吗?
  2. @IT老司机 6月3日,扫除技术与产品选型难题,CSDN选型智囊团来了!
  3. Docker 容器资源管理,你真的学会了吗?
  4. 春晚亲民,快手上行:探秘春晚红包的另一种打开方式
  5. 从 5G 到智能革命,这篇文章值得一看
  6. IoT 时代,架构简洁、开源的 RISC-V,将威胁 Arm?
  7. Java 那些最常用的工具类库 | 原力计划
  8. AI+大数据顶级技术盛会倒计时10天,6.6折票限时特惠!
  9. 为何各家抢滩物联网?
  10. 剑桥女博士创立情绪识别 AI 公司,帮助自闭症患者理解他人表情