一、用法
1.遍历数组
for in 返回数组的下标(key);for of 返回数组的元素
const arr1 = ['a', 'b', 'c'];
for (let i in arr1) {
console.log(i) // 0, 1, 2
}
const arr2 = ['a', 'b', 'c'];
for (let i of arr2) {
console.log(i) // a, b, c
}
2.给数组手动添加属性,for in 循环可以遍历出name这个键名
const arr3 = ['a', 'b'];
arr3.name = 'c';
for (let i in arr3) {
console.log(i) // 0, 1, name
}
3.直接遍历对象只能用 for in
二、
1.for in 的特点
for … in 循环返回的值都是数据结构的 键名。
遍历对象返回的对象的key值;
遍历数组返回的数组的下标(key)。
for … in 循环不仅可以遍历数字键名,还会遍历原型上的key值和手动添加的其他键;
特别情况下, for … in 循环会以任意的顺序遍历键名
2.for of 特点
for of 循环用来获取一对键值对中的值
一个数据结构只要部署了 Symbol.iterator 属性, 就被视为具有 iterator接口, 就可以使用 for of循环。
for of 循环可以随时退出循环。
for in 不是也可以跳出循环??
3.哪些数据结构部署了 Symbol.iteratoer属性了呢?
数组 Array
Map
Set
String
arguments对象
Nodelist对象, 就是获取的dom列表集合
4.想让对象可以使用 for of循环怎么办?使用 Object.keys() 获取对象的 key值集合后,再使用 for of
const obj = {a: 'x', b: 'y'};
for (let i of Object.keys(obj)) {
console.log(i) // a, b
}
网友评论