1. 遍历范围
for...of 循环可以使用的范围包括:
数组
Set
Map
类数组对象,如 arguments 对象、DOM NodeList 对象
Generator 对象
字符串

2. 优势
ES2015 引入了 for..of 循环,它结合了 forEach 的简洁性和中断循环的能力:

        <script type="text/javascript">
for (const v of ['a', 'b', 'c']) {
console.log(v);
}
// a b c // entries() 方法返回一个数组的迭代对象,该对象包含数组的键值对 (key/value)
for (const [i, v] of ['a', 'b', 'c'].entries()) {
console.log(i, v);
}
// 0 "a"
// 1 "b"
// 2 "c"
</script>
        3. 遍历 Map
<script type="text/javascript">
let arr = [[ 1, 'one' ],[ 2, 'two' ]]
let map = new Map(arr); // 遍历 key 值
for (let key of map.keys()) {
console.log(key);
} // 遍历 value 值
for (let value of map.values()) {
console.log(value);
} // 遍历 key 和 value 值(一)
for (let item of map.entries()) {
console.log(item[0], item[1]);
} // 遍历 key 和 value 值(二)
for (let [key, value] of map) {
console.log(key, value)
}
</script>

4.for...of与for...in的区别
无论是for...in还是for...of语句都是迭代一些东西。它们之间的主要区别在于它们的迭代方式
for...in 语句以原始插入顺序迭代对象的可枚举属性。(包括原型上的属性)
for...of 语句遍历可迭代对象定义要迭代的数据。

        <script type="text/javascript">
Object.prototype.objCustom = function() {};
Array.prototype.arrCustom = function() {}; let iterable = [3, 5, 7];
iterable.foo = 'hello'; for (let i in iterable) {
console.log(i); // logs 0, 1, 2, "foo", "arrCustom", "objCustom"
} for (let i in iterable) {
if (iterable.hasOwnProperty(i)) {
console.log(i); // logs 0, 1, 2, "foo"
}
} for (let i of iterable) {
console.log(i); // logs 3, 5, 7
}
</script>

随机推荐

  1. 并行处理框架Celery的Web监控管理服务-Flower

    安装和使用 使用pip安装Flower: $ pip install flower或 pip install flower -U -i https://pypi.tuna.tsinghua.edu.c ...

  2. CenterOS7 网络配置

    在 centerOS7 中,已经取消了 ifconfig 命令.使用 ip addr来查询网络配置. 网卡需要手动设置一下: 进入路径 /etc/sysconfig/network-scripts/ ...

  3. 分享一个我自己做的 Excel 万年历

    下载链接在此. 纯 Excel 公式实现,带农历,可自定义节日.配色. 带有紧凑日历和记事日历两种日历,均可直接 Ctrl+P 打印,且打印时不带有顶部的控制栏.

  4. iostst

    原文链接:https://blog.csdn.net/qq_20332637/article/details/82146753 iostat用于输出CPU和磁盘I/O相关的统计信息,iostat 也有 ...

  5. 《MySQL技术内幕:InnoDB存储引擎》读书笔记

    一.Mysql体系结构和存储引擎 1. 概念:              数据库:物理操作系统文件或其他形式文件类型的集合.(是文件的集合,是依照某种数据模型组织起来并存放于二级存储器中的数据集合.) ...

  6. cb08a_c++_顺序容器的操作1

    cb08a_c++_顺序容器的操作1容器定义的类型别名begin(闭区间)和end(开区间)成员{first,last)左闭右开,左包括,右不包括,end()指向最后一个的下一个. /*cb08a_c ...

  7. jmeter的参数化

    [4种参数化] 用户参数 适用于参数取值范围很小的时候使用 CSV数据文件设置 适用于参数取值范围较大的时候使用,该方法具有更大的灵活性 用户定义的变量 一般用于测试计划中不需要随请求迭代的参数设置, ...

  8. Andrew Ng - 深度学习工程师 - Part 2. 改善深层神经网络:超参数调试、正则化以及优化(Week 2. 优化算法)

    ===========第2周 优化算法================ ===2.1 Mini-batch 梯度下降=== epoch: 完整地遍历了一遍整个训练集 ===2.2 理解Mini-bat ...

  9. GridView绑定数据与隐藏指定控件(模板列)

    1.1.    GridView绑定数据 1)       可以配置SqlDataSource数据源,修改select语句生成框架(不想手动绑定) 2)       删除DataSourceID属性和 ...

  10. ImageLoader在Listview中的使用

    图片加载框架之ImageLoader 1_特点 1)多线程下载图片,图片可以来源于网络,文件系统,项目文件夹assets中以及drawable中等 2)支持随意的配置ImageLoader,例如线程池 ...