Kros的博客 Kros的博客
首页
  • CSS
  • 工具
  • Vue
  • js
  • Vue3
  • 算法
  • 折腾笔记
一言
  • 分类
  • 标签
  • 归档
码云

Kros

凡心所向,素履以往,生如逆旅,一苇以航
首页
  • CSS
  • 工具
  • Vue
  • js
  • Vue3
  • 算法
  • 折腾笔记
一言
  • 分类
  • 标签
  • 归档
码云
  • CSS

  • JavaScript

    • 兼容ie7的水平无限滚动
    • 节流防抖
    • 数组乱序
    • 开启全屏
    • 数据类型
    • 变量提升
    • this调用指向
    • 原型及原型扩展
    • js获取元素属性精度问题
    • setTimeout和setInterval
    • 数组判断
    • dom节点添加或插入元素
    • var、let和const的区别
    • 判断ellipsis是否省略生效
    • 使用ResizeObserver监听元素size变化
    • js自定义事件
    • use strict详解
    • 私有属性
    • js实现类的方式
    • call和apply的理解和使用
    • js失焦和点击事件顺序冲突
    • js中不常见但非常实用的运算符
    • for of和for in的区别
    • defer和async的区别
    • promise值穿透
    • js为什么会出现数字精确度丢失
    • js禁用F12开发者模式
    • 使用scrollTop和scrollTo滚动到目标位置
    • js实现打字机效果
    • 多种方式实现数组去重
    • 替换使用setTimeout
    • encodeURI和encodeURIComponent的区别
    • canvas实现弹跳小球
    • js实现跨标签页通信
    • 事件循环与微任务、宏任务
    • 浏览器存储数据方式
    • 常见的meta元数据使用
    • 使用InterSectionObserver判断元素区域(chatGPT)
  • 工具

  • Vue

  • antdv踩坑记录

  • Vue3

  • 前端
  • JavaScript
kros
2024-05-06

for of和for in的区别

for...of 和 for...in 是 JavaScript 中两种不同的循环结构,它们在遍历对象和数组时有不同的用途和行为:

  1. for...of 循环:
    • 用于遍历可迭代对象(如数组、字符串、Map 和 Set)的元素。
    • 提供对每个元素的直接访问。
    • 语法:
      for (const item of iterable) {
        // 代码块,在这里可以访问到每个元素 item
      }
      
      1
      2
      3
    • 示例:
      const arr = [1, 2, 3];
      for (const num of arr) {
        console.log(num); // 依次打印 1, 2, 3
      }
      
      1
      2
      3
      4
  • 对象object是不能直接使用for of进行遍历的,如果要对对象使用for of需要使用Object.entries()返回对象键值对结果,再对该结果进行遍历
  • 示例:
    const object1 = {
      a: 'somestring',
      b: 42,
    };
    
    for (const [key, value] of Object.entries(object1)) {
      console.log(`${key}: ${value}`); // ['a', 'somestring']  ['b', 42]
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
  1. for...in 循环:
    • 用于遍历对象的键(包括继承的键)。
    • 提供对每个键的访问,而不是键对应的值。
    • 语法:
      for (const key in object) {
        // 代码块,在这里可以访问到每个键 key 和对应的值 object[key]
      }
      
      1
      2
      3
    • 示例:
      const obj = { a: 1, b: 2, c: 3 };
      for (const key in obj) {
        console.log(`${key}: ${obj[key]}`); // 打印 "a: 1", "b: 2", "c: 3"
      }
      
      1
      2
      3
      4

注意:

  • for...of 通常用于数组和字符串,因为它直接提供每个元素的值。
  • for...in 通常用于对象,因为它遍历对象的键。
  • 当使用 for...in 循环遍历数组时,循环会按照数组索引的字符串形式进行迭代,而不是按照数组元素的顺序。
  • 对于继承属性,for...in 会枚举对象自身的可枚举属性以及它从原型链上继承的可枚举属性,而 for...of 不会。
  • 在处理大型集合或性能敏感的应用时,for...of 通常比 for...in 更高效。

选择使用哪种循环取决于你的具体需求和你要遍历的数据类型。

上次更新: 2025/09/05, 8:09:00
js中不常见但非常实用的运算符
defer和async的区别

← js中不常见但非常实用的运算符 defer和async的区别→

最近更新
01
Find the next perfect square
09-05
02
Regex validate PIN code
09-05
03
Find the odd int
09-05
更多文章>
Theme by Vdoing | Copyright © 2020-2025 kros king
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
icon-heart-o icon-heart icon-infinity icon-pause icon-play link next prev