JavaScript中的“for each”、“for of” 和 “for in”的区别

在JavaScript中执行遍历操作时,会经常遇到for each、for of和for in, 那他们之间究竟有什么区别呢?

1、forEach
它只能用在数组对象中。forEach接受一个回调函数,回调函数的参数包含三个变量,第一个参数是当前遍历数组中的某个元素,第二个参数是该元素在数组中的下标,第三个元素是数组本身。例如:
let numbers = [1,2,3,4];numbers.forEach((element, index, array)=>{ console.log("element:",element) });
注:forEach有一个巨大的缺陷就是不能使用break或者return来中段循环。

2、for of
在ES6中提供一种新的遍历集合对象的方式,不仅仅是数组可以使用,像Set, List以及其它自定义集合对象都可以使用。但前提是它所遍历的对象必须有 [Symbol.iterator] 属性,也就是我们所说的迭代器对象。并且for of操作符可以在for循环中使用break, continue和return来中段循环。比如:
for (let word of uniqueWords) {if (word.length>0){console.log(word);}else{continue; }}

3、for in
一般它被用来遍历一个对象的所有属性。通过for in 你可以很方便的访问到对象的属性的字符串类型的键。在JavaScript对象的属性自己也有一些内部属性,其中的一个内部属性就是[[Enumerbale]] 。只要当属性的内部属性[[Enumerbale]]值设置为true时,for in操作的时候才能读取到。

你可能感兴趣的:(JavaScript中的“for each”、“for of” 和 “for in”的区别)