回答:
はい、return
実行を停止して関数を終了します。return
always **は関数をすぐに終了し、forループ内にある場合はそれ以上実行しません。
自分で簡単に確認できます:
function returnMe() {
for (var i=0; i<2; i++) {
if (i === 1) return i;
}
}
alert(returnMe());
// 1
**注:参照してください。この他の回答の特殊なケースについてtry/catch/finally
と、この答えはforEachは独自の関数スコープが含む関数から抜け出していないだろうしているループ方法についてを。
return
それでも、関数コールバックの現在の反復から、独自のスコープで戻りますが、呼び出しメソッド全体から中断することは期待されていませんforEach()
。つまり、ループ自体からは戻りませんが、ループが実行するコールバックから戻ります。リンクされた質問のコード例では、リターンのために出力がを1,2,4,5
スキップして3
います。
return
常に現在のthis
コンテキストから戻るということです。
break
し、その後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
声明は、それが関数内だ場合にのみ、ループを停止します。そうしないと、次のエラーが発生します。
Uncaught SyntaxError: Illegal return statement(…)
このコードは、ループの最初の反復後にループを終了し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
}
答えは「はい」です。returnステートメントを作成すると、コントロールは呼び出し元のメソッドにすぐに戻ります。returnステートメントの後に実行されるfinallyブロックを除いて。
また、finallyブロックの内部に戻った場合、最後に、返された値をオーバーライドすることもできます。リンク:Try-catch-finally-returnの説明
次のようにステートメント定義を返す:
Javaドキュメント:
returnステートメントを使用して、制御フローブロックから分岐し、メソッドを終了できます。
MSDNドキュメント:
returnステートメントは、関数の実行を終了し、呼び出し元の関数に制御を返します。呼び出し直後の時点で、呼び出し元の関数の実行が再開されます。
ウィキペディア:
returnステートメントを使用すると、実行は現在のサブルーチンを終了し、サブルーチンが呼び出された直後のコード内のポイント(復帰アドレス)から再開されます。戻りアドレスは、通常はプロセスの呼び出しスタックに、サブルーチン呼び出しを行う操作の一部として保存されます。多くの言語のReturnステートメントを使用すると、関数は、その関数を呼び出したコードに返される戻り値を指定できます。
"return"は関数を終了しますが、大量のデータを返したい場合は、ループにデータを1つずつ返すのではなく、配列に格納してから返すことができます。