0

for of如果没有结果值,我需要退出一个循环。我突然想到我可以使用早期return语句来处理这个问题,或者使用break语句。需要明确的是,在这种情况下,在我跳过的部分之后的这段代码中没有额外的代码可以执行,所以我假设任何一个都可以在这里工作(中断或返回)。在这种特殊情况下使用一个而不是另一个的任何功能或性能原因?

选项1:(休息)

  for (let diff of differences) {
    if (!diff.path) break;

    if (diff.path[0] !== "updatedAt") {
      const docChange = new ChangedProp(doc, diff, lastEditedBy, "customer");
      docChange.log();
    }
  }

选项2:(返回)

  for (let diff of differences) {
    if (!diff.path) return;

    if (diff.path[0] !== "updatedAt") {
      const docChange = new ChangedProp(doc, diff, lastEditedBy, "customer");
      docChange.log();
    }
  }
4

1 回答 1

5

在这种特殊情况下使用一个而不是另一个的任何功能或性能原因?

不,如果我们假设for-of循环是包含它的函数中的最后一件事。可能存在一种或另一种样式参数,但没有功能或性能原因。

显然,如果循环之后有代码,则using将导致该代码运行,而 using将导致该代码被跳过。这是一个显着的功能差异:for-ofbreakreturn

function a(array) {
  for (const value of array) {
    if (value % 2 == 0) {
      break;
    }
  }
  console.log("This line gets reached");
}
function b(array) {
  for (const value of array) {
    if (value % 2 == 0) {
      return;
    }
  }
  console.log("This line does NOT get reached");
}

const arr = [1, 2, 3];
a(arr);
b(arr);

在该示例中,和中的代码a除了使用和使用b之外是相同的(最后记录的文本略有不同)。abreakbreturn

console.log但是,如果在循环之后没有它,则没有功能差异。

于 2019-06-05T12:55:27.020 回答