js中for...in 与 for...of

for...in和for...of都是用于循环遍历数据结构的语句,但它们有以下区别:

  1. for...in循环遍历的是对象的属性名,而for...of循环遍历的是数据结构的对象,比如数组,字符串,Map,Set等。

  2. for...in循环不仅可以遍历自身属性,也可以遍历继承的属性,因此需要使用hasOwnProperty方法判断某个属性是否是自身属性。而for...of循环只能遍历自身的属性,不需要使用hasOwnProperty方法。

  3. for...in循环遍历的是对象的键值对,因此返回值是对象的键名;而for...of循环遍历的是对象的值,因此返回值是对象的键值。

举个例子来说,对于以下数组:

let arr = [1, 2, 3];

使用for...in循环遍历:

for(let i in arr) {
  console.log(i); // 0, 1, 2
}

使用for...of循环遍历:

for(let i of arr) {
  console.log(i); // 1, 2, 3
}

for...in和for...of都是JavaScript中用于遍历数据结构的循环语句,但是它们有不同的用途和适用范围。

for...in是用于遍历对象的属性。它会遍历对象自身以及原型链上所有可枚举的属性,包括函数和数组的属性。语法如下:

for(let key in obj) {
  // 循环体
}

其中,key是对象的属性名,obj是要遍历的对象。

for...of是用于遍历可迭代对象(例如数组、字符串、Set、Map等)。它遍历的是对象的值,而不是属性。语法如下:

for(let value of iterable) {
  // 循环体
}

其中,value是可迭代对象的元素值,iterable是要遍历的可迭代对象。

需要注意的是,for...of无法遍历普通对象(Object)的属性,需要将它们转换为可迭代对象才能使用for...of进行遍历。

总之,for...in循环遍历的是对象的属性名,for...of循环遍历的是对象的值。

你可能感兴趣的:(JavaScript,javascript,开发语言)