在 JavaScript 中退出 for-of 循环块中使用 Break 语句与早期 Return
Using Break Statement vs Early Return in Exiting for-of Loop Block in JavaScript
我有一个 for of
循环,如果没有结果值,我需要在该循环中退出。我突然想到我可以使用早期的 return
语句来处理这个问题,或者使用 break
语句。需要明确的是,在这种情况下,在我跳过的部分之后没有其他代码可以在该代码块中执行,因此我假设其中任何一个都可以在这里工作(break 或 return)。在这种特殊情况下,有任何功能或性能原因需要使用一个而不是另一个吗?
选项 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:(return)
for (let diff of differences) {
if (!diff.path) return;
if (diff.path[0] !== "updatedAt") {
const docChange = new ChangedProp(doc, diff, lastEditedBy, "customer");
docChange.log();
}
}
Any functional or performance reason to use one over the other in this particular case?
不,如果我们假设 for-of
循环是包含它的函数中的最后一个东西。可能存在一种或另一种样式参数,但没有功能或性能原因。
显然,如果在 循环 for-of
之后有代码 ,使用 break
将导致该代码得到 运行,并使用 return
将导致跳过该代码。这是一个显着的功能差异:
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
中的代码除了 a
使用 break
和 b
使用 [=14 之外是相同的=](最后记录的文本略有不同)。
虽然在循环之后没有那个 console.log
,但功能上没有区别。
我有一个 for of
循环,如果没有结果值,我需要在该循环中退出。我突然想到我可以使用早期的 return
语句来处理这个问题,或者使用 break
语句。需要明确的是,在这种情况下,在我跳过的部分之后没有其他代码可以在该代码块中执行,因此我假设其中任何一个都可以在这里工作(break 或 return)。在这种特殊情况下,有任何功能或性能原因需要使用一个而不是另一个吗?
选项 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:(return)
for (let diff of differences) {
if (!diff.path) return;
if (diff.path[0] !== "updatedAt") {
const docChange = new ChangedProp(doc, diff, lastEditedBy, "customer");
docChange.log();
}
}
Any functional or performance reason to use one over the other in this particular case?
不,如果我们假设 for-of
循环是包含它的函数中的最后一个东西。可能存在一种或另一种样式参数,但没有功能或性能原因。
显然,如果在 循环 for-of
之后有代码 ,使用 break
将导致该代码得到 运行,并使用 return
将导致跳过该代码。这是一个显着的功能差异:
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
中的代码除了 a
使用 break
和 b
使用 [=14 之外是相同的=](最后记录的文本略有不同)。
虽然在循环之后没有那个 console.log
,但功能上没有区别。