다음과 같은 루프가 있다고 가정하십시오.
for (var i = 0; i < SomeArrayOfObject.length; i++) {
if (SomeArray[i].SomeValue === SomeCondition) {
var SomeVar = SomeArray[i].SomeProperty;
return SomeVar;
}
}
빠른 질문 : return
루프 실행 자체를 중지합니까?
답변
예, return
실행을 중지하고 기능을 종료합니다. return
항상 **는 for 루프 안에 있으면 더 이상 실행하지 않고 즉시 기능을 종료합니다.
쉽게 확인할 수 있습니다.
function returnMe() {
for (var i=0; i<2; i++) {
if (i === 1) return i;
}
}
alert(returnMe());
// 1
** 참고 : 특별한 경우에 대한 다른 답변try/catch/finally
과 forEach 루프가 자체 기능 범위를 갖는 방법에 대한 이 답변을 참조하십시오 .
답변
에서 가장 (본 프로그램 포함)의 경우, 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
매번 해당 명령문을 실행하지 않으면 어떻게 될지 상상해보십시오 . 생각할 때 값을 반환한다는 의미가 무효화됩니다.
답변
답은 ‘예’입니다. return 문을 작성하면 컨트롤이 즉시 호출자 메서드로 돌아갑니다. finally 문을 제외하고는 return 문 다음에 실행됩니다.
finally 블록 내부로 돌아 오면 반환 한 값을 재정의 할 수도 있습니다. 링크 : 시범 잡기 최종 반품 설명
다음과 같은 반환 문 정의 :
자바 문서 :
return 문을 사용하여 제어 흐름 블록에서 분기하고 메서드를 종료 할 수 있습니다.
MSDN 설명서 :
return 문 은 함수 실행을 종료 하고 호출 함수에 제어를 반환합니다. 호출 바로 다음 지점에서 호출 기능에서 실행이 재개됩니다.
위키 백과 :
return 문은 실행이 현재 서브 루틴을 떠나서 서브 루틴이 호출 된 직후 리턴 코드라고하는 코드의 지점에서 재개되도록합니다. 리턴 주소는 일반적으로 서브 루틴 호출을 수행하는 작업의 일부로 프로세스의 호출 스택에 저장됩니다. 여러 언어로 된 return 문을 사용하면 함수가 함수를 호출 한 코드에 반환 값을 다시 지정할 수 있습니다.
답변
“return”은 함수를 종료하지만 많은 양의 데이터를 반환하려는 경우 배열에 저장 한 다음 루프에서 각 데이터를 1 씩 1 씩 반환하는 대신 반환 할 수 있습니다.