aurora blog
  • JS

    • 基本汇总
    • Date时间
    • Array方法
    • String 方法
    • Object方法
    • RegExp正则
    • Es6 新特性等
    • Event-Loop
    • Http and Https
    • for in和for of区别
    • Web Worker
    • Promise && async
    • 堆内存 & 栈内存
    • JS设计模式探索
    • npm & yarn
    • Fetch和Axios的区别
    • 学习及面试问题整理
    • URL 输入到页面加载过程
    • 跨域&nginx本地项目代理
  • FE框架

    • react

      • 基本用法
      • react生命周期
      • hooks 16.8版本后
      • Route原理
      • Redux源码解析
      • React16 Fiber
      • React-VirtualDOM
      • React事件委托机制
    • vue

      • vue 基本用法
      • vue 生命周期
      • VirtualDOM
      • vue 事件委托
      • vue 架构
      • vue 状态管理
      • 问题等
    • React-Native

      • React-Native 基本用法
    • 微前端

      • 遇到的问题
    • 鸿蒙 harmony

      • harmony 基础
  • 构建工具

    • webpack

      • Webpack配置详解
      • Webpack的使用
      • Babel-polyfill
      • webpack面试题
    • vite

      • vite基本配置
  • Typescript

    • Typescript详解
  • Servers

    • Nodejs
    • Nginx
  • Git命令

    • git常用规范
  • 数据库

    • mongodb
    • mongodb
  • Other

    • Jenkins自动化部署

for in和for of区别

  • for in
    • 数组
    • 对象
    • for in 缺点
    • Object.keys()和for in的区别
  • for of
    • 数组
    • for of 优点

for in

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

数组

let arr = [1, 2];

for (let key in arr) {
    console.log(arr[key]); // 会正常打印 1, 2
}

// 但是如果在 Array 原型链上添加一个方法
Array.prototype.test = function() {};

for (let key in arr) {
    console.log(arr[key]); // 此时会打印 1, 2, ƒ () {}
}

对象

let obj = {f1: 'test1', f2: 'test2'}
for (let key in obj) {
    console.log(key, obj[key])
}
// 打印
// f1 test1
// f2 test2

for in 缺点

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

Object.keys()和for in的区别

  • for in区别在于不能遍历出原型链上的属性;

for of

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

数组

let arr = [{age: 1}, {age: 5},]
for(let {age} of arr) {
    console.log(age)
}
// 打印
// 1
// 5

for of 优点

  1. for of 有与for in 一样的简洁语法(这也是两者容易混乱的点),但没有for in的缺点
  2. for of 保证顺序且不会仅遍历当前对象
最近更新:: 2021/8/12 22:33
Contributors: sountstars
Prev
Http and Https
Next
Web Worker