提问人:frenchie 提问时间:7/30/2012 最后编辑:JΛYDΞVfrenchie 更新时间:1/31/2023 访问量:289170
return 会停止循环吗?
Does return stop a loop?
问:
如果我有以下循环for
for (var i = 0; i < SomeArrayOfObject.length; i++) {
if (SomeArray[i].SomeValue === SomeCondition) {
var SomeVar = SomeArray[i].SomeProperty;
return SomeVar;
}
}
该语句是否会停止函数的执行?return
答:
是的,每当函数的控制流遇到语句时,函数总是结束。return
下面的示例演示语句如何结束函数的执行。return
function returnMe() {
for (var i = 0; i < 2; i++) {
if (i === 1) return i;
}
}
console.log(returnMe());
注意:请参阅另一个关于 – 的特殊情况的答案,以及这个关于回调如何具有自己的函数范围的答案,因此它不会脱离包含函数。try
catch
finally
forEach
评论
return
forEach()
1,2,4,5
3
return
this
break
return
是的,一旦执行了语句,整个函数就会在此时退出。return
试想一下,如果它不这样做并继续循环,并且每次都执行该语句,会发生什么?当你考虑它时,它会使它返回一个值的意义无效。return
在大多数情况下(包括这种情况),将立即退出。但是,如果返回值位于带有随附块的块中,则 始终执行并可以“覆盖”.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
评论
“return”确实退出了该函数,但如果你想返回大量数据,你可以将其存储在一个数组中,然后返回它,而不是尝试在循环中逐个返回每条数据。
仅当循环位于函数内部时,该语句才会停止循环(即它同时终止循环和函数)。否则,您将收到以下错误:return
Uncaught SyntaxError: Illegal return statement(…)
要终止循环,应使用 .break
答案是肯定的,如果编写 return 语句,控件会立即返回到调用方方法。 但 finally 块除外,该块在 return 语句之后执行。
如果您在 finally 块内返回,finally 也可以覆盖您返回的值。 链接:try-catch-finally-return 澄清
Return 语句定义如下:
Java 文档:
return 语句可用于分支出控制流块 并退出该方法
MSDN 文档:
return 语句终止函数的执行,并且 将控制权返回给调用函数。执行在 在调用后立即调用函数。
维基百科:
return 语句导致执行离开当前子例程 并在代码中的点上恢复,紧接在 子例程被调用,称为其返回地址。退货地址 通常保存在进程的调用堆栈上,作为 进行子例程调用的操作。许多 return 语句 语言允许函数指定要传回的返回值 添加到调用该函数的代码。
评论
此代码将在循环中的第一次迭代后退出循环: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
}
下面的代码将跳转到条件并继续循环: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
}
评论