for in 、for of详解

for in

可以用在可枚举数据 => 对象

可枚举数据

属性描述符 => enumerable

示例

1、可以用来遍历对象 => 属性名
如:
在这里插入图片描述
上面有个enumerable属性,就是它来控制属性是否可枚举

同时也会枚举对象原型上的可枚举的属性名

let obj = {
    
    
    name: "lihegui",
    gender: "nan",
    age: "22"
}
for (let item in obj) {
    
    
    console.log(item);
}
//	name
//	gender
//	age

2、可以用来遍历数组 => 数组下标

let arr = ["lihegui", "fxp", "shuzu"]
for (let item in arr) {
    
    
    console.log(item);
}
//	0
//	1
//	2

3、遍历字符串 => 字符所处的位置下标

let str = "lihegui"
for (let item in str) {
    
    
    console.log(item);
}
//	0
//	1
//	2
//	3
//	4
//	5
//	6

for of

可以用在可迭代数据 => 数组、字符串、Map、Set

for in 遍历map set会是undefined

可迭代数据

只要一个数据实现Iterator接口,这个数据就会有一个叫做[Symbol.iterator]的属性
例如数组有个Synbol.iterator的属性

示例

1、遍历数组 => 数组每一项

let arr = ["lihegui", ["and", "lihegui"], "fxp", "shuzu"]
for (let item of arr) {
    
    
    console.log(item);
}
//	lihegui
//	['and','lihegui']
//	fxp
//	shuzu

2、遍历字符串 => 字符每一项

let str = "lihegui"
for (let item of str) {
    
    
    console.log(item);
}
//	l
//	i
//	h
//	e
//	g
//	u
//	i

3、遍历map => 每一项

let map = new Map([
    [1, 'one'],
    [2, 'two'],
    [3, 'three']
])
for (let item of map) {
    
    
    console.log(item);
}
//	[ 1, 'one' ]
//	[ 2, 'two' ]
//	[ 3, 'three' ]

4、遍历set => 每一项

let set = new Set(["lihegui", "fxp"])
for (let item of set) {
    
    
    console.log(item);
}
//	lihegui
//	fxp

猜你喜欢

转载自blog.csdn.net/qq_45859670/article/details/127042208