其它循环

在JavaScript中,除了for循环之外,还有几种其他的循环语句,用于执行重复的操作。以下是一些常见的循环语句:

1. while 循环

while循环会持续执行,直到给定的条件不再为真。

 1let i = 0;
 2while (i < 5) {
 3  console.log(i);
 4  i++;
 5}
 6
 7// 输出:
 8// 0
 9// 1
10// 2
11// 3
12// 4

2. do...while 循环

do...while循环至少执行一次,即使条件从一开始就为假。然后它会检查条件,如果条件为真,则继续执行。

 1let i = 0;
 2do {
 3  console.log(i);
 4  i++;
 5} while (i < 5);
 6
 7// 输出:
 8// 0
 9// 1
10// 2
11// 3
12// 4

3. for...in 循环

for...in循环遍历一个对象的所有可枚举属性(包括它原型链上的属性)。

 1const person = {fname:"John", lname:"Doe", age:25};
 2for (const key in person) {
 3  if (person.hasOwnProperty(key)) { // 检查属性是否属于对象本身,而不是原型链
 4    console.log(key + ":", person[key]);
 5  }
 6}
 7
 8// 输出:
 9// fname: John
10// lname: Doe
11// age: 25

4. for...of 循环

for...of循环用于遍历可迭代对象(如数组、字符串、Map、Set、NodeList等)。

1const arr = [3, 5, 7];
2for (const value of arr) {
3  console.log(value);
4}
5
6// 输出:
7// 3
8// 5
9// 7

5. 异步循环

JavaScript的异步循环通常不是通过特定的循环语句实现的,而是通过回调函数、Promises、async/await等机制来处理异步操作的重复执行。

使用 setInterval

 1let i = 0;
 2const intervalId = setInterval(() => {
 3  console.log(i);
 4  i++;
 5  if (i >= 5) {
 6    clearInterval(intervalId);
 7  }
 8}, 1000);
 9
10// 每隔1秒输出一个数字,从0开始到4结束

使用 async/awaitfor...of

1async function processAsyncIterable(asyncIterable) {
2  for await (const value of asyncIterable) {
3    console.log(value);
4  }
5}
6
7// 假设 asyncIterable 是一个异步迭代器
8processAsyncIterable(asyncIterable);

这些循环结构各有其用途和特点,可以根据具体需求选择最合适的循环语句。