Ade*_*emo 1 javascript break for-of-loop
我有一个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();
}
}
Run Code Online (Sandbox Code Playgroud)
选项 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();
}
}
Run Code Online (Sandbox Code Playgroud)
在这种特殊情况下,有什么功能或性能原因需要使用其中一种而不是另一种吗?
不,如果我们假设循环for-of是包含它的函数中的最后一个东西。可能存在某种风格的争论,但没有功能或性能的原因。
显然,如果循环后面有代码for-of,则 usingbreak将导致该代码运行,而 usingreturn将导致该代码被跳过。这是一个显着的功能差异:
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);Run Code Online (Sandbox Code Playgroud)
a在该示例中,和中的代码除了使用和使用b之外是相同的(并且最后记录的文本略有不同)。abreakbreturn
但是,如果没有console.log循环之后的内容,则没有功能上的差异。
| 归档时间: |
|
| 查看次数: |
1758 次 |
| 最近记录: |