一、为什么ES2015 引入 for of 循环

我们先来回想一下,ES2015以前与遍历相关的方法

  • for循环:遍历普通的数组
  • for in : 遍历键值对
  • 一些函数式的遍历方法 ,比如forEach

这些遍历方式都有一定的局限性,比如说forEach() 不能退出循环


// for of 基本语法
const arr = [100,200,300,400]
for(const item of arr){console.log(item)if(item > 100){break  // for of 可以用退出循环}
}
arr.forEach() // 不能退出循环// 为了能够终止遍历, 需要借用以下方法
arr.some() // return true 终止遍历
arr.every() // return false 终止遍历

ES2015引入了 for of 循环 ,作为遍历所有数据结构的统一方式

二、for of 循环基本使用

数组、伪数组、Set、Map 对象 都可以直接 用for of 遍历


const m = new Map()
m.set('foo',123)
m.set('bar',345)
for(const item of m){console.log(item)//item 键和值都会拿到 ['foo',123]
}
// 数组解构
for(const [key,value] of m){console.log(key,value)
}

for of 遍历对象可以吗?

const obj = {name:'jack'}
for(const item of obj){console.log(item)
}

诶?不是说 for of 循环可以作为遍历所有数据结构的统一方式吗?

为什么遍历对象报错了呢?

三、了解for…of 的内部原理

看下一篇文章: ES2015 Iterable(可迭代的)接口

ES2015 for of 循环相关推荐

  1. 我的笔记--ECMAScript 新特性

    文章目录 ECMAScript 概述 ES2015 概述 ES2015 let 与块级作用域 ES2015 const ES2015 数组的解构 ES2015 对象的解构 ES2015 模板字符串 E ...

  2. Node.js Web开发_第二章(2)

    电子书推荐 Digital Forensics with Kali Linux, 2nd Edition Debugging CSS Practical Entity Framework Core 6 ...

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

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

  4. 30分钟掌握ES6/ES2015核心内容

    ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015. 也就是说,ES6就是ES2015. ...

  5. 从一道题浅说 JavaScript 的事件循环

    阮老师在其推特上放了一道题: new Promise(resolve => {resolve(1);Promise.resolve().then(() => console.log(2)) ...

  6. ES6/ES2015核心内容(上)

    ECMAScript 6(以下简称 ES6)是 JavaScript 语言的下一代标准.因为当前版本的 ES6 是在 2015 年发布的,所以又称 ECMAScript 2015.· 也就是说,ES6 ...

  7. 30分钟掌握ES6/ES2015核心内容(上)

    ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015. 也就是说,ES6就是ES2015. ...

  8. boost log 能不能循环覆盖_记一次for循环中let是声明还是赋值

    //同事讨论遇到一个很有意思的话题 //for循环里面的i循环第二次是赋值还是重新声明 for(let i=0;i<100;i++){console.log(i) } //对于这个问题正常解释 ...

  9. 掌握ES6/ES2015核心内容

    ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015. 也就是说,ES6就是ES2015. ...

  10. 30分钟掌握ES6/ES2015核心内容 1

    2019独角兽企业重金招聘Python工程师标准>>> ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所 ...

最新文章

  1. 用leangoo敏捷开发看板工具做技术支持
  2. ENGINEER 003:配置IPv6地址
  3. Python入门学习笔记11(静态方法、类方法与属性方法)
  4. Oracle监控的关键指标有哪些
  5. 闪迪u盘量产工具万能版_我身边的“闪迪色”闪迪彩色手机U盘系列| 大家测573...
  6. 图论--最短路径--观光旅游
  7. 转两好文防丢:Debian 版本升级/降级 Linux 应用程序失去输入焦点问题的解决...
  8. jrtplib java,jrtplib 分包处理
  9. 怎么隐藏splitcontainer分界线
  10. iatf16949内审员_IATF16949:2016内审员试题及答案.pdf
  11. python——esc按键按下与识别
  12. K8sAPI接口文档
  13. 春款童装产品做短视频营销应该怎么做?短视频营销策略分析
  14. Web前端基础笔记:第十章 CSS-背景
  15. 10.setTimeout和setInterval的区别以及模拟实现:
  16. 通俗来理解 ARM芯片内核,架构,指令集,软核和硬核之间的关系
  17. 探讨mos管串并联分裂问题
  18. jquery.tipsy实现标题提示功能
  19. python ai教程_带有Python的AI教程
  20. 字节跳动、今日头条、阿里爸爸都在使用Flutter,你还有拒绝的理由?

热门文章

  1. Pycharm安装第三方包报错怎么办
  2. 计算机编程导论python程序设计答案-计算机科学与Python编程导论_学堂云答案
  3. 微信开放平台授权java_微信开放平台授权登录(java版)
  4. 用Excel也能制作PS,今天就让你涨涨见识!
  5. Lake Shore Cernox低温温度传感器之温度探头
  6. 【模块】MAX31865 铂电阻温度检测器模块 RTD传感器PT100-PT1000
  7. 【推荐系统论文精读系列】(十二)--Neural Factorization Machines for Sparse Predictive Analytics
  8. 【无标题】c++创建一个三角形类,计算周长和面积
  9. 如何降低计算机版本,苹果系统怎么降级到好用的老版本
  10. Centos迁移旧硬盘的数据