반환 키워드

return를 사용하여 함수가 최종 결과로 생성해야 하는 값을 지정합니다. 인터프리터가 return 문에 도달하면 해당 문이 포함된 함수가 즉시 종료되고 지정된 값이 함수가 호출된 컨텍스트로 반환됩니다.

const myFunction = function() {
   return 2 + 2;
}

myFunction();
> 4

값을 반환하는 함수는 변수와 마찬가지로 값에 포함된 데이터로 효과적으로 취급할 수 있습니다.

const myFunction = function() {
   return 2 + 2;
}

myFunction() + myFunction();
> 8

표현식이 없는 return 문은 함수를 종료하고 undefined를 반환합니다.

const myFunction = function() {
   return;
}

myFunction();
> undefined

return 키워드는 함수의 끝을 나타내므로 발생된 return 뒤에 오는 코드는 실행되지 않습니다.

const myFunction = function() {
   return true;
   console.log( "This is a string." );
}

myFunction();
> true

또한 return 문 뒤에 오는 코드는 일부 브라우저의 개발 콘솔에서 오류가 아닌 경고를 발생시킬 수 있습니다.

const myFunction = function() {
   return true;
   console.log( "This is a string." );
}
> unreachable code after return statement

myFunction();
> true

다시 말하지만, 이는 함수 실행 중에 발생한 return 문에만 적용되며 return 문 뒤에 오는 코드에는 순차적으로 적용되지 않습니다.

const myFunction = function( myParameter ) {
   if( myParameter === undefined ) {
    return "This is the result.";
   }
   return "This is the alternate result.";
}

myFunction();
> "This is the result."

myFunction( true );
> "This is the alternate result."

초기에 return를 사용하여 함수를 '단락'하면 함수 끝에 return 문을 하나만 사용하는 것보다 더 간결한 코드를 사용할 수 있습니다. 예를 들어 다음 함수는 전달된 값이 5자 이상을 포함하는 문자열인지 확인합니다. 전달된 값이 문자열 리터럴이 아니면 문자를 계산하는 코드가 필요하지 않으며 함수는 false 결과를 즉시 반환할 수 있습니다.

function myFunction( myString ) {
   if( typeof myString !== "string" ) {
    return false;
   }
   if( myString.length >= 5 ) {
    return true;
   } else {
    return false;
   }
}

myFunction( 100 );
> false

myFunction( "St" );
> false

myFunction( "String." );
> true

화살표 함수 표현식은 화살표 함수 본문에 단일 표현식이 있고 블록 문법이 없으면 return 키워드가 암시된다는 점에서 고유합니다.

const myFunction = () => 2 + 2;

myFunction();
> 4

블록 문법을 사용하여 화살표 함수 본문을 정의하는 경우 함수 본문에 단일 표현식만 포함되어 있어도 명시적인 return가 필요합니다.

const myFunction = () => { 2 + 2 };

myFunction();
> undefined
const myFunction = () => { return 2 + 2 };

myFunction();
> 4

이해도 테스트

return의 용도

함수의 최종 결과 지정
코드를 함수의 시작 부분으로 반환