답변:
예, 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여전히 자체 범위 내에서 함수 콜백의 현재 반복에서 리턴하지만 전체 호출 메소드에서 벗어날 것으로 예상되지는 않습니다 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
이 코드는 루프에서 첫 번째 반복 후에 루프를 종료합니다 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 문을 작성하면 컨트롤이 즉시 호출자 메서드로 돌아갑니다. finally 문을 제외하고는 return 문 다음에 실행됩니다.
finally 블록 내부로 돌아 오면 반환 한 값을 재정의 할 수도 있습니다. 링크 : 시범 잡기 최종 반품 설명
다음과 같은 반환 문 정의 :
자바 문서 :
return 문을 사용하여 제어 흐름 블록에서 분기하고 메서드를 종료 할 수 있습니다.
MSDN 설명서 :
return 문 은 함수 실행을 종료 하고 호출 함수에 제어를 반환합니다. 호출 바로 다음 지점에서 호출 기능에서 실행이 재개됩니다.
위키 백과 :
return 문은 실행이 현재 서브 루틴을 떠나서 서브 루틴이 호출 된 직후 리턴 코드라고하는 코드의 지점에서 재개되도록합니다. 리턴 주소는 일반적으로 서브 루틴 호출을 수행하는 작업의 일부로 프로세스의 호출 스택에 저장됩니다. 여러 언어로 된 return 문을 사용하면 함수가 함수를 호출 한 코드에 반환 값을 다시 지정할 수 있습니다.