📅  最后修改于: 2023-12-03 15:30:38.228000             🧑  作者: Mango
Es6引入了新的循环语法——for-of循环。它可以遍历数据结构的所有元素,非常适合循环数组,字符串和生成器等可迭代对象。
for-of循环的基本语法如下所示:
for (let value of iterable) {
// 循环体
}
这里的iterable表示一个可迭代对象,例如数组、字符串或生成器。在每次迭代中,for-of循环会将iterable的下一个值赋值给value,然后执行循环体中的代码。
对于数组和字符串,for-of循环会遍历它们的元素,而对于生成器,则会遍历它们生成的数据。
let arr = [1, 2, 3];
for (let value of arr) {
console.log(value);
}
// 输出: 1 2 3
let str = "hello";
for (let char of str) {
console.log(char);
}
// 输出: h e l l o
function* range(start, end) {
for (let i = start; i <= end; i++) {
yield i;
}
}
for (let num of range(1, 3)) {
console.log(num);
}
// 输出: 1 2 3
for-of循环也可以用于遍历Map和Set结构中的元素。对于Map,for-of循环会遍历Map的键值对,而对于Set,它会遍历Set中的值。
let map = new Map();
map.set("name", "Jack");
map.set("age", 26);
for (let [key, value] of map) {
console.log(key, value);
}
// 输出: name Jack
// age 26
let set = new Set([1, 2, 3]);
for (let value of set) {
console.log(value);
}
// 输出: 1 2 3
与传统的for循环不同,for-of循环不支持break和continue语句中止循环。但是,可以使用return语句结束循环,效果跟break语句相同。
let arr = [1, 2, 3];
for (let value of arr) {
if (value === 2) {
return;
}
console.log(value);
}
// 输出: 1
for-of循环是Es6中非常有用的新特性,它可以轻松地遍历数组、字符串、Map和Set等可迭代对象。同时,使用for-of循环编写的代码也更加简洁明了。