js循环及for-in , for-of的区别


循环

字符串遍历:可通过for-of遍历字符串

for-in:遍历对象自身可继承可枚举属性

Object.keys():返回对象自身可枚举属性的键组成的数组

Object.getOwnPropertyNames():返回对象自身可继承可枚举非枚举属性的键组成的数组

Object.getOwnPropertySymbols():返回对象Symbol属性的键组成的数组

Reflect.ownKeys():返回对象自身可继承可枚举非枚举Symbol属性的键组成的数组

 

 

 

ForOf循环

  • 定义:调用Iterator接口产生遍历器对象(for-of内部调用数据结构的Symbol.iterator())
  • 遍历字符串:for-in获取索引,for-of获取值(可识别32位UTF-16字符)
  • 遍历数组:for-in获取索引,for-of获取值
  • 遍历对象:for-in获取键,for-of需自行部署
  • 遍历Set:for-of获取值 => for (const v of set)
  • 遍历Map:for-of获取键值对 => for (const [k, v] of map)
  • 遍历类数组:包含length的对象、Arguments对象、NodeList对象(无Iterator接口的类数组可用Array.from()转换)
  • 计算生成数据结构:Array、Set、Map
    • keys():返回遍历器对象,遍历所有的键
    • values():返回遍历器对象,遍历所有的值
    • entries():返回遍历器对象,遍历所有的键值对
  • 与for-in区别
    • 有着同for-in一样的简洁语法,但没有for-in那些缺点、
    • 不同于forEach(),它可与break、continue和return配合使用
    • 提供遍历所有数据结构的统一操作接口


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM