답변:
예, 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 문을 사용하면 함수가 함수를 호출 한 코드에 반환 값을 다시 지정할 수 있습니다.