fre*_*hie 136 javascript loops return
假设我有一个这样的循环:
for (var i = 0; i < SomeArrayOfObject.length; i++) {
if (SomeArray[i].SomeValue === SomeCondition) {
var SomeVar = SomeArray[i].SomeProperty;
return SomeVar;
}
}
Run Code Online (Sandbox Code Playgroud)
快速问题:是否return停止循环执行本身?
Mic*_*ski 175
是的,return停止执行并退出该功能.return总是立即退出它的功能,如果它在循环内,则不再执行.
它很容易为您自己验证:
function returnMe() {
for (var i=0; i<2; i++) {
if (i === 1) return i;
}
}
alert(returnMe());
// 1
Run Code Online (Sandbox Code Playgroud)
注意:请参阅另一个关于特殊情况的答案try/catch/finally.
Joh*_*ata 56
在大多数情况下(包括这一个),return将立即退出.但是,如果返回在try带有伴随finally块的块中,则finally始终执行并可以"覆盖" return中的try.
function foo() {
try {
for (var i = 0; i < 10; i++) {
if (i % 3 == 0) {
return i; // This executes once
}
}
} finally {
return 42; // But this still executes
}
}
console.log(foo()); // Prints 42
Run Code Online (Sandbox Code Playgroud)
小智 10
此代码将在循环中的第一次迭代后退出for of循环:
const objc = [{ name: 1 }, { name: 2 }, { name: 3 }];
for (const iterator of objc) {
if (iterator.name == 2) {
return;
}
console.log(iterator.name);// 1
}
Run Code Online (Sandbox Code Playgroud)
下面的代码将跳转到条件并继续for of循环:
const objc = [{ name: 1 }, { name: 2 }, { name: 3 }];
for (const iterator of objc) {
if (iterator.name == 2) {
continue;
}
console.log(iterator.name); // 1 , 3
}
Run Code Online (Sandbox Code Playgroud)
该return语句仅在函数内部时才停止循环。否则,您将收到此错误:
Uncaught SyntaxError: Illegal return statement(…)
Run Code Online (Sandbox Code Playgroud)