JavaScript – for…in、for…of 和 forEach 的不同点

13,132次阅读
没有评论

共计 952 个字符,预计需要花费 3 分钟才能阅读完成。

for…in

说明

for...in 会迭代对象中所有的可枚举属性,当然也包括继承的可枚举属性。他可以对数组、字符串或普通对象进行迭代,但不能对 MapSet 对象进行迭代。

代码

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); // 没有可枚举的属性,输出为空

for…of

说明

for...of 会对可以迭代的对象进行迭代,但他迭代的是对象的值,而不是对象的属性。他可以对数组、字符串、MapSet 对象进行迭代,但不能对普通对象进行迭代。

代码

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); // Uncaught TypeError: {(intermediate value)(intermediate value)(intermediate value)} is not iterable

for (let val of new Set(['a', 'b', 'a', 'd'])) 
  console.log(val);  // 输出 Set 值:a, b, d

forEach()

说明

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
);

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于1970-01-01发表,共计952字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)