老是记错这两个区别,今天自己写个帖子记录一下。
总结:
for in 特别适合遍历 对象
for of 只能遍历 数组
1.共性
for in 和 for of都是用来遍历的属性
2.区别
-
for in语句可遍历 数组 or 对象,得到数组下标 or 对象的key
-
for of只能遍历数组,得到数组值(不可遍历对象)
3.举例
遍历数组
let temp = ['2023-02-18', '2023-02-19', '2023-02-20']
//for in遍历数组,输出数组下标
for (let p in temp) {
console.log(p); //输出: 0 1 2
}
//for of遍历数组,输出数组值
for (let p of temp) {
console.log(p); //输出: 2023-02-18 2023-02-19 2023-02-20
}
遍历对象
let temp = {
name: '小白',
age: 23,
country: 'China'
}
//for in遍历对象,输出对象的key
for (let p in temp) {
console.log(p); //输出:name age country
}
//for of不能遍历对象,会报错
遍历数组对象
let temp = [
{name:'小白'},
{age:24}
]
for(let item of temp) {
console.log(item) //输出: {name:'小白'} {age:24}
for(let p in item) {
console.log(item[p]); //输出: 小白 24
}
}
4.for of 特点
- 一个数据结构只要部署了 Symbol.iterator 属性, 就被视为具有 iterator接口, 就可以使用 for of循环
- for of 不同与 forEach, 它可以与 break、continue和return 配合使用,也就是说 for of 循环可以随时退出循环
- for of 循环用来获取一对键值对中的值,而 for in 获取的是 键名