return
return
return 문은 함수 실행을 종료하고 함수 호출자에게 반환할 값을 지정합니다. Baseline Widely available — 2015년 7월부터 여러 브라우저에서 지원되는 잘 정착된 기능입니다.
출처: return
본문
return 문은 함수 실행을 종료하고 함수 호출자(caller)에게 반환할 값을 지정합니다.
시도해 보기 (Try it)
function getRectArea(width, height) {
if (width > 0 && height > 0) {
return width * height;
}
return 0;
}
console.log(getRectArea(3, 4));
// Expected output: 12
console.log(getRectArea(-3, 4));
// Expected output: 0
구문 (Syntax)
return;
return expression;
expression: 반환할 값을 가진 표현식입니다. 생략하면undefined가 반환됩니다.
설명 (Description)
return 문은 함수 본문 안에서만 사용할 수 있습니다. 함수 본문에서 return 문이 사용되면 함수의 실행이 중지됩니다. return 문은 다른 함수에 놓일 때 서로 다른 효과를 가집니다:
- 일반 함수에서, 그 함수에 대한 호출은 반환값으로 평가됩니다.
- async 함수에서, 생성된 promise는 반환된 값으로 resolve됩니다.
- 제너레이터 함수에서, 생성된 제너레이터 객체의
next()메서드는{ done: true, value: returnedValue }를 반환합니다. - async 제너레이터 함수에서, 생성된 async 제너레이터 객체의
next()메서드는{ done: true, value: returnedValue }로 이행(fulfill)되는 promise를 반환합니다.
try 블록 안에서 return 문이 실행되면, 값이 실제로 반환되기 전에 그 finally 블록이 있다면 먼저 실행됩니다.
자동 세미콜론 삽입 (Automatic semicolon insertion)
이 문법은 return 키워드와 반환될 표현식 사이에 줄 종결자(line terminator)를 금지합니다.
return
a + b;
위 코드는 자동 세미콜론 삽입(ASI)에 의해 다음으로 변환됩니다:
return;
a + b;
이렇게 하면 함수가 undefined를 반환하고 a + b 표현식은 결코 평가되지 않습니다. 콘솔에서 경고가 발생할 수 있습니다.
이 문제를 피하려면(ASI를 막으려면) 괄호를 사용할 수 있습니다:
return (
a + b
);
예제 (Examples)
함수 중단하기 (Interrupt a function)
함수는 return이 호출된 지점에서 즉시 멈춥니다.
function counter() {
// Infinite loop
for (let count = 1; ; count++) {
console.log(`${count}A`); // Until 5
if (count === 5) {
return;
}
console.log(`${count}B`); // Until 4
}
console.log(`${count}C`); // Never appears
}
counter();
// Logs:
// 1A
// 1B
// 2A
// 2B
// 3A
// 3B
// 4A
// 4B
// 5A
함수 반환하기 (Returning a function)
클로저(Closures)에 관한 문서도 참고하세요.
function magic() {
return function calc(x) {
return x * 42;
};
}
const answer = magic();
answer(1337); // 56154
명세 (Specifications)
return 문은 ECMAScript 언어 명세에 정의되어 있습니다.
브라우저 호환성 (Browser compatibility)
이 기능은 대부분의 현대 브라우저에서 널리 지원됩니다(Baseline Widely available). 자세한 호환성 표는 MDN의 브라우저 호환성 섹션을 참고하세요.
더 알아보기
- 함수 (Functions)
- 클로저 (Closures)
- 화살표 함수 (Arrow functions)