Skip to content

循环

for

js
out: for (let j = 0; j < 10; j++) {
  inner: for (let i = 0; i < 10; i++) {
    if (i % 2 === 0) continue;
    if (i === 7) break out;
  }
}

for...in...

  • 遍历所有可枚举属性,包括原型链上的
js
for (const i in "string");
for (const i in [0, 1, 2, 3]);
for (const i in { name: "张三", age: 18 });

for...of...

  • 遍历 iterable
js
for (const i of "string");
for (const i of [0, 1, 2, 3]);
for (const i of new Set([1, 2, 3]));

function* Iter() {
  yield "第一次";
  yield "第二次";
  yield "第三次";
  return "第四次";
}
const iter = Iter();
for (const i of iter);
const iter01 = Iter();
iter01.next(); //{value:"第一次", done:false}
iter01.next(); //{value:"第二次", done:false}
iter01.next(); //{value:"第三次", done:false}
iter01.next(); //{value:"第四次", done:true}

for await...of

  • 遍历异步 iterable
js
async function* Iter() {
  yield "第一次";
  yield "第二次";
  yield "第三次";
  return "第四次";
}
const iter = Iter();
(async () => {
  for await (const item of iter);
})();

while

js
/**
 * while后为falsy则循环继承
 */
let i = 0;
while (i < 10) {
  i++;
}

Coded by Yang_Lee