碎片时间学编程「35]:JavaScript 的 for...in、for...of 和 forEach 有什么区别?

for...in用于迭代对象的所有可枚举属性,包括继承的可枚举属性。此迭代语句可以与数组字符串或普通对象一起使用,但不能与Map 或 Set对象一起使用。

for (let prop in ['a', 'b', 'c'])

  console.log(prop);            // 0, 1, 2 (数组索引

for (let prop in 'str')

  console.log(prop);            // 0, 1, 2 (字符串索引)

for (let prop in {a: 1, b: 2, c: 3})

  console.log(prop);            // a, b, c (对象属性名)

for (let prop in new Set(['a', 'b', 'a', 'd']))

  console.log(prop);            // undefined (没有可枚举的属性)

for...of用于迭代可迭代对象,迭代它们的值而不是它们的属性。此迭代语句可用于数组、字符串Map或Set对象,但不能用于普通对象。

for (let val of ['a', 'b', 'c'])

  console.log(val);            // a, b, c (数组索引)

for (let val of 'str')

  console.log(val);            // s, t, r (字符串字符)

for (let val of {a: 1, b: 2, c: 3})

  console.log(prop);          // TypeError (不可迭代)

for (let val of new Set(['a', 'b', 'a', 'd']))

  console.log(val);            // a, b, d (设定值)

最后,forEach()是Array原型的一个方法,它允许您遍历数组的元素。虽然forEach()只迭代数组,但它可以在迭代时访问每个元素的值和索引。

['a', 'b', 'c'].forEach(

  val => console.log(val)    // a, b, c (数组值)

);

['a', 'b', 'c'].forEach(

  (val, i) => console.log(i)  // 0, 1, 2 (数组索引)

);

更多内容请访问  https://www.icoderoad.com

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容