for in 和 for of
本文借鉴大哥艾迪蛋https://blog.csdn.net/qq_43796489/article/details/119566594
-
遍历数组的时候
for in 中的key是下标值
for of 中的key是具体的元素值。
let arr = [1, 2, 3, 4];
for (let key in arr) {
console.log(key);//0,1,2,3
}
for (let key of arr) {
console.log(key);//1,2,3,4
}
-
遍历对象的时候
for in的key是属性名
for of是不能遍历对象的
let arr = { name: 'cat', age: 1, sex: 'man' }; for (let key in arr) { console.log(key);//name,age,sex console.log(arr[key])//cat,1,man } for (let key of arr) { console.log(key);//Uncaught TypeError: arr is not iterable }
-
遍历数组对象的时候
for in中的key仍然是下标值
for of中的key仍然是对应的值
let arr = [ { name: 'cat' }, { age: 1 }, { sex: 'man' } ] for (let key in arr) { console.log(key);//0,1,2 console.log(arr[key]);//{ name: 'cat' },{ age: 1 },{ sex: 'man' } } for (let key of arr) { console.log(key);//{ name: 'cat' },{ age: 1 },{ sex: 'man' } for (let key1 in key) { console.log(key[key1]);//cat,1,man } }总结:for in适合遍历对象,for of适合遍历数组。for in遍历的是数组的索引,对象的属性,以及原型链上的属性。