如果需要提前退出,可以使用JavaScript的循环

在现代JavaScript中,谈论到谦卑的for循环的实用性是很少的。除了在异步操作场景中特别有用之外,如果你需要提前退出循环,它还可以使你的代码更高效。考虑以下示例:

const smallArray = [0, 2];
const largeArray = Array.from({ length: 1000 }, (_, i) => i);

const areEqual = (a, b) => {
  let result = true;
  a.forEach((x, i) => {
    if (!result) return;
    if (b[i] === undefined || x !== b[i]) result = false;
  });
  return result;
}

areEqual(largeArray, smallArray); // false
// 将遍历`largeArray`中的所有项

显然,这段代码并没有进行优化,但它突出了数组方法(如Array.prototype.forEach())无法提前退出循环的问题。为了解决这个问题,我们可以使用for循环和提前的return

const smallArray = [0, 2];
const largeArray = Array.from({ length: 1000 }, (_, i) => i);

const areEqual = (a, b) => {
  for (let i in a) {
    if (b[i] === undefined || a[i] !== b[i]) return false;
  }
  return true;
}

areEqual(largeArray, smallArray); // false
// 只会循环到遇到第一个不匹配的项为止