Skip to content

循环/遍历

这里有一些遍历对象的示例,更多示例需要在对象遍历的文章查看

for

大多数时候需要循环都会用到for循环

js
for (let i = 0; i < 3; i++) {
  console.log(i)
}

上面这个例子初始化一个变量i用来做循环判断条件,然后判断i < 3,如果为true就执行循环体,也就是{}里面的内容, 执行循环体后再执行i++然后再判断i < 3,一直到这个条件为false结束循环

while

有时候需要一个无限循环,比如服务器监听端口号,这时候可以 while (true) 创建一个无线循环。

js
let i = 0
// i>=3的时候条件不满足,退出循环
while (i < 3) {
  console.log(i)
  i += 1
}

continue 继续

continue关键字可以跳过后续代码,直接进行下一次循环

js
for (let i = 1; i < 10; i++) {
  // 如果i是偶数,就跳过后续代码直接进入下次循环
  if (i % 2 === 0) {
    continue
  }
  console.log(i)
}

break 退出

break结束当前循环,注意它结束的是当前循环体的循环,如果多个循环嵌套,不会影响到外层循环

js
for (let i = 0; i < 3; i++) {
  // 直接结束并退出循环
  if (i === 1) {
    break
  }
}

for (let i = 0; i < 10; i++) {
  for (let k = i; k < 3; k++) {
    // 这里的break不会结束外层的循环
    if (k === 1) break
  }
  console.log(i)
}

多层循环退出

很多时候我们会用多层循环来遍历数据,当满足条件的时候希望直接退出所有循环,用普通的break比较难实现。这里可以用returnthrow Error来处理

在函数中可以直接return结束循环

js
const shallowEqual = (obj1, obj2) => {
  for (const [key, value] of Object.entries(obj1)) {
    if (key === null) {
      // 这个return会直接结束函数,循环也自然会被结束
      return
    }
  }
}

一个在python中常见的操作是抛出异常来结束循环或函数的执行,在js中可能比较少见

js
try {
  for (let i = 0; i < 10; i++) {
    for (let k = i; k < 3; k++) {
      throw Error('异常')
    }
  }
} catch (e) {
  // 捕获到异常之后可以在这里进行后续处理
}