for of 和 for in有什么区别
// 数组-----
const arr = [22,33,44,55,66,77]
// for of 输出的是值 22 33 44...
for (const a of arr ){
console.log('of',a)
}
for in 输出的下标 0 1 2 ...
for (const b in arr){
console.log('in',b)
}
// 对象-----
const object = {name: 'gege', age: 23}
for of
for(const obj1 of object){
console.log('obj1',obj1) // 报错:Uncaught TypeError: object is not iterable 对象不可迭代 因为of没有iterator接口
}
for in
for (const obj2 in object){
console.log('obj2',obj2) // 输出 name,age
console.log('obj2 key',object[obj2]) // 输出gege,23
}
// 数组对象
const list = [{name: 'gege'}, {age: 23}]
for (let val of list) {
console.log('of', val); // 输出 {name:'gege'}{age:23}
for (let key in val) {
console.log('in', key); // 输出 name age
console.log('in', val[key]); // 输出 gege 23
}
}
总结:
for in适合遍历对象,for of适合遍历数组。
for in遍历的是数组的索引,对象的属性,以及原型链上的属性。