# for...of语句的使用
for...of
语句是用于迭代可迭代对象中的元素的语句。它可以遍历任何具有Symbol.iterator
方法的对象,包括数组、字符串、Set和Map等集合。
# for...of语句的语法
for (variable of iterable) {
statement
}
2
3
for...of
语句的语法如上所示,其中iterable
表示可迭代对象,variable
表示迭代器当前所指向的元素。
# for...of语句的示例
const arr = [1, 2, 3, 4, 5];
for (let item of arr) {
console.log(item);
}
2
3
4
5
上面代码中,arr
是一个数组,它是一个可迭代对象。for...of
语句遍历arr
中的每个元素,并将当前元素赋值给item
变量。因此,item
变量的值分别为1
、2
、3
、4
和5
。
# for...of语句与for循环的区别
for...of
语句与for
循环的区别在于for...of
语句可以遍历任何具有Symbol.iterator
方法的对象,而for
循环只能遍历数组。
const arr = [1, 2, 3, 4, 5];
for (let i = 0; i < arr.length; i++) {
console.log(arr[i]);
}
2
3
4
5
上面代码中,arr
是一个数组,它是一个可迭代对象。for
循环遍历arr
中的每个元素,并将当前元素赋值给i
变量。因此,i
变量的值分别为1
、2
、3
、4
和5
。
const str = 'hello';
for (let i = 0; i < str.length; i++) {
console.log(str[i]);
}
2
3
4
5
6
上面代码中,str
是一个字符串,它是一个可迭代对象。for
循环遍历str
中的每个元素,并将当前元素赋值给i
变量。因此,i
变量的值分别为h
、e
、l
、l
和o
。
const set = new Set([1, 2, 3, 4, 5]);
for (let i = 0; i < set.size; i++) {
console.log(set[i]);
}
2
3
4
5
6
上面代码中,set
是一个Set集合,它是一个可迭代对象。for
循环遍历set
中的每个元素,并将当前元素赋值给i
变量。因此,i
变量的值分别为1
、2
、3
、4
和5
。
const map = new Map([['a', 1], ['b', 2], ['c', 3], ['d', 4], ['e', 5]]);
for (let i = 0; i < map.size; i++) {
console.log(map[i]);
}
2
3
4
5
6
上面代码中,map
是一个Map集合,它是一个可迭代对象。for
循环遍历map
中的每个元素,并将当前元素赋值给i
变量。因此,i
变量的值分别为[a, 1]
、[b, 2]
、[c, 3]
、[d, 4]
和[e, 5]
。
const obj = { a: 1, b: 2, c: 3, d: 4, e: 5 };
for (let i = 0; i < obj.size; i++) {
console.log(obj[i]);
}
2
3
4
5
6
上面代码中,obj
是一个对象,它是一个可迭代对象。for
循环遍历obj
中的每个元素,并将当前元素赋值给i
变量。因此,i
变量的值分别为undefined
、undefined
、undefined
、undefined
和undefined
。
# for...of语句与for...in语句的区别
for...of
语句与for...in
语句的区别在于for...of
语句可以遍历任何具有Symbol.iterator
方法的对象,而for...in
语句只能遍历对象的可枚举属性。
const arr = [1, 2, 3, 4, 5];
for (let item in arr) {
console.log(item);
}
2
3
4
5
上面代码中,arr
是一个数组,它是一个可迭代对象。for...in
语句遍历arr
中的每个元素,并将当前元素的索引赋值给item
变量。因此,item
变量的值分别为0
、1
、2
、3
和4
。
const str = 'hello';
for (let item in str) {
console.log(item);
}
2
3
4
5
6
上面代码中,str
是一个字符串,它是一个可迭代对象。for...in
语句遍历str
中的每个元素,并将当前元素的索引赋值给item
变量。因此,item
变量的值分别为0
、1
、2
、3
和4
。
const set = new Set([1, 2, 3, 4, 5]);
for (let item in set) {
console.log(item);
}
2
3
4
5
6
上面代码中,set
是一个Set集合,它是一个可迭代对象。for...in
语句遍历set
中的每个元素,并将当前元素的索引赋值给item
变量。因此,item
变量的值分别为0
、1
、2
、3
和4
。
const map = new Map([['a', 1], ['b', 2], ['c', 3], ['d', 4], ['e', 5]]);
for (let item in map) {
console.log(item);
}
2
3
4
5
上面代码中,map
是一个Map集合,它是一个可迭代对象。for...in
语句遍历map
中的每个元素,并将当前元素的索引赋值给item
变量。因此,item
变量的值分别为0
、1
、2
、3
和4
。
const obj = { a: 1, b: 2, c: 3, d: 4, e: 5 };
for (let item in obj) {
console.log(item);
}
2
3
4
5
6
上面代码中,obj
是一个对象,它是一个可迭代对象。for...in
语句遍历obj
中的每个元素,并将当前元素的索引赋值给item
变量。因此,item
变量的值分别为a
、b
、c
、d
和e
。