介绍for-of循环
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循环相关推荐
- .NET并行编程实践(一:.NET并行计算基本介绍、并行循环使用模式)
阅读目录: 1.开篇介绍 2.NET并行计算基本介绍 3.并行循环使用模式 3.1并行For循环 3.2并行ForEach循环 3.3并行LINQ(PLINQ) 1]开篇介绍 最近这几天在捣鼓并行计算 ...
- EXCEL技能点4——介绍Vlookup与循环引用
1 Vlookup函数的介绍 VLOOKUP函数是Excel中的一个纵向查找函数,它与LOOKUP函数和HLOOKUP函数属于一类函数,在工作中都有广泛应用,例如可以用来核对数据,多个表格之间快速 ...
- 1-Python介绍-判断和循环语句
- 判断三角形java代码_小猿圈Java循环嵌套语法的使用介绍
Java是一直被程序员使用的程序之一,而且应用也是最广泛的一个,很多应用中都会用得到,小猿圈java讲师就为你介绍一下Java循环嵌套语法的使用介绍,希望对你有所帮助. 嵌套循环是指在一个循环语句的循 ...
- YJango的循环神经网络——实现LSTM YJango的循环神经网络——实现LSTM YJango YJango 7 个月前 介绍 描述最常用的RNN实现方式:Long-Short Term Me
YJango的循环神经网络--实现LSTM YJango 7 个月前 介绍 描述最常用的RNN实现方式:Long-Short Term Memory(LSTM) 梯度消失和梯度爆炸 网络回忆:在< ...
- java while语句打印三角形_小猿圈Java循环嵌套语法的使用介绍
Java是一直被程序员使用的程序之一,而且应用也是最广泛的一个,很多应用中都会用得到,小猿圈java讲师就为你介绍一下Java循环嵌套语法的使用介绍,希望对你有所帮助. 嵌套循环是指在一个循环语句的循 ...
- MindSpore循环神经网络
MindSpore循环神经网络 一. 神经网络的组成 神经元模型:首先简单的了解以下构成神经网络的最基础单元:神经元.每个神经元与其它神经元相连,处于激活状态时,就会向相连的神经元发送相应信号.从而改 ...
- 14.parfor并行循环处理
FPGA教程目录 MATLAB教程目录 -------------------------------------------------------------------------------- ...
- for循环java_java的这三种for循环有什么区别?
展开全部 J2SE 1.5提供了另一种形式的for循环.借助这种形式的for循环,可以用更简单地方式来62616964757a686964616fe59b9ee7ad9431333332633034遍 ...
- Python基础教程(四):循环语句
Python 循环语句 本章节将向大家介绍Python的循环语句,程序在一般情况下是按顺序执行的. 编程语言提供了各种控制结构,允许更复杂的执行路径. 循环语句允许我们执行一个语句或语句组多次,下面是 ...
最新文章
- android升级gradle到3.4.1
- 快速优雅的为React组件生成文档
- webservice axis1.4生成客户端
- 互斥锁、自旋锁和自适应自旋锁
- vue适配移动端px自动转化为rem
- 最新版python学习_最全Python学习路线图【2020最新版】
- 【COCOS2DX隐藏IOS7状态栏】通过添加PLIST KEY隐藏IOS7状态栏
- 函数04 - 零基础入门学习C语言35
- 面试官:什么是JDK什么是JRE?服务器可以只安装JRE吗?
- 条款01:视C++为一个语言联邦
- python中实现多路分支的最佳控制结构是_哪个选项是实现多路分支的最佳控制结构? (1.3分)_学小易找答案...
- C# sqlDataReader区别Dataset
- Keil MDK5解决error: L6002U: Could not open file …\obj\main.o: No such file or directory
- Roundcube开启用户自助更改密码功能
- 思科模拟器交换机的几种配置模式
- [雪峰磁针石博客]python3标准库-中文版2:内置函数
- 什么是IP65?仅仅是防水等级吗?看完本文直呼666!
- 新装的mysql数据库默认密码是多少_数据库的设置及其初始密码
- html / CSS 自定义字体font 自己设置好看的特效字体
- paddle百度飞浆入门使用教程