for in 和for of 的用法

for in

  • 一般用于遍历对象的可枚举属性。以及对象从构造函数原型中继承的属性。对于每个不同的属性,语句都会被执行。
  • 不建议使用for in 遍历数组,因为输出的顺序是不固定的。
  • 如果迭代的对象的变量值是null或者undefined, for in不执行循环体,建议在使用for in循环之前,先检查该对象的值是不是null或者undefined

因此,for in 尽量用于遍历对象

const obj = {
  'a':1,
  'b':2,
  'c':3
}
for(const i in obj) {
  console.log(i)
  console.log(obj[i])
}  
// 输出 a 1 b 2 c 3

for of

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

因此,for of 适用于遍历数组、map、set、字符串等

// *** 数组 ***
const arr = [1,3,6,9]
for(const i of arr) {
  console.log(i)
}
// 输出 1 3 6 9
// 遍历数组用普通的 for 循环最方便   

// *** map 对象 *** 
const map = new Map([['d', 12], ['e', 13]])
map.set('f', 14)
for(const [k, v] of map) {
  console.log(k)
  console.log(v)
}
// 输出 d 12 e 13 f 14   

// *** Set 对象 ***
const st = new Set([1, 2])
st.add(3)
for(const s of st) {
  console.log(s)
}
console.log(st.size)
// 输出 1 2 3 3

// 字符串同数组

总结:for in 适合遍历对象,for of 适合遍历字符串、数组、Map、Set对象等。

posted on 2021-04-23 10:15  韭菜鸡蛋ZH  阅读(369)  评论(0)    收藏  举报

导航