返回是否会停止循环?

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.

  • > return总是立即退出它的函数,如果它在循环内部则不再执行[...除非它是forEach循环](http://stackoverflow.com/questions/34653612/what-does-return-keyword-mean-内部 - 的foreach功能/ 34653650) (24认同)
  • @oo排序真实.`return`仍然从函数回调的当前迭代返回,在它自己的范围内,但是不会期望从整个调用方法`forEach()`中断.所以它不会从_loop本身返回,而是从循环执行的回调中返回.在链接问题的代码示例中,由于返回,输出为"1,2,4,5"跳过"3". (8认同)
  • 我知道这对某些人来说是微不足道的,但这是很好的了解,因为您不再需要“中断”然后“返回”。 (2认同)

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)


Dam*_*ica 8

return语句仅在函数内部时才停止循环。否则,您将收到此错误:

Uncaught SyntaxError: Illegal return statement(…)
Run Code Online (Sandbox Code Playgroud)


Kel*_*yne 5

是的,一旦return执行了语句,整个函数就会退出.

试想一下,如果没有并继续循环,并且return每次都执行该语句会发生什么?当你想到它时,它会使它返回一个值的意义无效.