返回停止循环?

假设我有这样一个循环:

for (var i = 0; i < SomeArrayOfObject.length; i++) { if (SomeArray[i].SomeValue === SomeCondition) { var SomeVar = SomeArray[i].SomeProperty; return SomeVar; } } 

快速的问题: return停止循环的执行本身?

是的, return停止执行并退出该function。 return总是立即退出它的函数,如果它在一个循环内部没有进一步的执行。

这很容易validation你自己:

 function returnMe() { for (var i=0; i<2; i++) { if (i === 1) return i; } } alert(returnMe()); // 1 

注意:请参阅关于try/catch/finally的特殊情况的其他答案 。

大多数情况下(包括这一个), return将立即退出。 但是,如果返回是在finally块中的try块中,那么finally始终执行并可以“覆盖” tryreturn

 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 

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

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

“return”会退出函数,但是如果你想返回大量的数据,你可以把它存储在一个数组中,然后返回它,而不是试图在循环中一个一个地返回每一条数据。

只有当循环在函数内时, return语句才会停止循环。 否则,你会得到这个错误:

 Uncaught SyntaxError: Illegal return statement(…) 

答案是肯定的,如果你写了return语句,控件会立即返callback用方法。 finally语句除外,在return语句之后执行。

最后还可以覆盖你已经返回的值,如果你返回finally块内。 LINK: 试着抓住最后回报的澄清

返回语句定义如下:

Java文档:

可以使用return语句从控制stream程块分支出来并退出该方法

MSDN文档:

return语句终止函数的执行并将控制权返回给调用函数。 紧接在呼叫之后的地方,呼叫function中的执行继续。

维基百科:

return语句导致执行离开当前的子程序,并在调用子程序的地方立即恢复到代码中的位置,称为返回地址。 返回地址通常保存在进程的调用栈中,作为调用子程序的一部分。 许多语言的返回语句允许一个函数指定一个返回值来传递给调用该函数的代码。