Wang's blog Wang's blog
首页
  • 前端文章

    • HTML教程
    • CSS
    • JavaScript
  • 前端框架

    • Vue
    • React
    • VuePress
    • Electron
  • 后端技术

    • Npm
    • Node
    • TypeScript
  • 编程规范

    • 规范
  • 我的笔记
  • Git
  • GitHub
  • VSCode
  • Mac工具
  • 数据库
  • Google
  • 服务器
  • Python爬虫
  • 前端教程
更多
收藏
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Wang Mings

跟随大神,成为大神!
首页
  • 前端文章

    • HTML教程
    • CSS
    • JavaScript
  • 前端框架

    • Vue
    • React
    • VuePress
    • Electron
  • 后端技术

    • Npm
    • Node
    • TypeScript
  • 编程规范

    • 规范
  • 我的笔记
  • Git
  • GitHub
  • VSCode
  • Mac工具
  • 数据库
  • Google
  • 服务器
  • Python爬虫
  • 前端教程
更多
收藏
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Python爬虫

  • 前端教程

    • 团队规范

    • Project

    • JS

      • Canvas基础
      • 数据结构
      • 树的深度优先遍历与广度优先遍历
      • for in和for of区别
        • [#](#for-in) for in
          • [#](#数组) 数组
          • [#](#对象) 对象
          • [#](#for-in-缺点) for in 缺点
        • [#](#for-of) for of
          • [#](#数组-2) 数组
          • [#](#for-of-优点) for of 优点
      • ES6-新增特性一览
      • ES6-解构赋值及原理
      • ES6-Object
      • ES6-模块详解
      • ES6-Class
      • ES6-ECMAScript特性汇总
      • 输入URL背后的技术步骤
      • JavaScript与浏览器 - 线程与引擎
      • HTTP跨域解决方案
      • Http 2与Http 1.x比较
      • JavaScript原型
      • JavaScript继承
      • JavaScript事件循环
      • 动手实现Promise
      • JS设计模式
      • JS 经典面试题
      • 排序算法
      • 正则表达式
      • MVC、MVP、MVVM区别
      • Array API与V8源码解析
      • 从V8 sort源码看插入排序
    • NodeJS

    • Vue

    • React

    • 效率工具

    • 读书笔记

  • 教程
  • 前端教程
  • JS
wangmings
2022-07-19
目录

for in和for of区别

# # for in和for of区别

# # for in

以任意顺序遍历一个对象的可枚举属性 (opens new window) (opens new window)。遍历数组时,key为数组下标字符串;遍历对象,key为对象字段名。

# # 数组

    let arr = [{age: 1}, {age: 5}, {age: 100}, {age: 34}]
    for (let key in arr) {
        console.log(key, arr[key])
    }
    // 打印
    // 0 {age: 1}
    // 1 {age: 5}
    // 2 {age: 100}
    // 3 {age: 34}
    
1
2
3
4
5
6
7
8
9
10

# # 对象

    let obj = {f1: 'test1', f2: 'test2'}
    for (let key in obj) {
        console.log(key, obj[key])
    }
    // 打印
    // f1 test1
    // f2 test2
    
1
2
3
4
5
6
7
8

# # for in 缺点

  1. for in 迭代顺序依赖于执行环境,不一定保证顺序
  2. for in 不仅会遍历当前对象,还包括原型链上的可枚举属性
  3. for in 没有break中断
  4. for in 不适合遍历数组,主要应用为对象

# # for of

ES6引入的新语法。在可迭代对象(包括 Array,Map,Set,String,TypedArray,arguments对象,NodeList对象)上创建一个迭代循环,调用自定义迭代钩子,并为每个不同属性的值执行语句。

Object对象不是可迭代对象,故for of 不支持。for of有个很大的特点是支持数组的break中断。

# # 数组

    let arr = [{age: 1}, {age: 5}, {age: 100}, {age: 34}]
    for(let {age} of arr) {
        if (age > 10) {
            break // for of 允许中断
        }
        console.log(age)
    }
    // 打印
    // 1
    // 5
    
1
2
3
4
5
6
7
8
9
10
11

# # for of 优点

  1. for of 有与for in 一样的简洁语法(这也是两者容易混乱的点),但没有for in的缺点
  2. for of 保证顺序且不会仅遍历当前对象
  3. for of 可与break,continue,return配合
编辑 (opens new window)
树的深度优先遍历与广度优先遍历
ES6-新增特性一览

← 树的深度优先遍历与广度优先遍历 ES6-新增特性一览→

最近更新
01
theme-vdoing-blog博客静态编译问题
09-16
02
搜索引擎
07-19
03
友情链接
07-19
更多文章>
Theme by Vdoing | Copyright © 2019-2022 Evan Xu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式