JavaScript(이하 'js')에서는 여러가지 문
들이 있는데 대표적으로 for
, if...else
, while
등이 있고, var
, let
, const
라는 Declaration keyword
가 있다.
오늘은 그 중에서 return
Statement에 대해 알아보도록 하자.
return [expression];
expression
에는 반환받고 싶은 값(value), 선언 된 변수(variable) 등을 넣는다.
아무 값도 넣지 않을 시
undefined
가 반환 됨.
function square(x) {
return x * x;
}
var demo = square(3); // 9
위와 같이 return
을 함수 내(function body)에서 사용할 때, 함수는 return
에 의해 실행이 중단되고, 지정된 값을 반환한다.
위의 함수에서는 parameter x
에 대해 argument 3
이므로 32인 9
를 반환한다.
return
a + b;
또한 return
은 ASI(Automatic Semicolon Insertion == 자동 세이콜론 삽입)의 영향을 받아 위와 같은 줄바꿈을 허용하지 않는다.
따라서 가독성 등을 생각하여 줄바꿈을 하고싶을 때에는
return (
a + b;
)
위와 같이 괄호(parentheses)를 사용하도록 하자.
function counter() {
for (var count = 1; ; count++) { // 무한반복 함수
console.log(count + 'A'); // count = 5까지 실행
if (count === 5) {
return;
}
console.log(count + 'B'); // count = 4까지 실행
}
console.log(count + 'C'); // 실행되지 않음
}
counter();
// Output:
// 1A
// 1B
// 2A
// 2B
// 3A
// 3B
// 4A
// 4B
// 5A
위와 같이 원하는 타이밍에 함수를 중단하고 싶을 때 return
을 사용할 수 있다.
예시에서는 특정한 값을 반환받지 않기위해 expression
이 생략되었다.
function magic() {
return function calc(x) { return x * 42; };
}
var answer = magic();
answer(1337); // 56154
위와 같이 함수 내의 함수(Nested function)를 불러오고 싶을 때 return
을 사용할 수 있다.
일반적으로 함수 내에 선언된 함수는 직접적으로 불러 올 수가 없다.
function magic() {
function calc(x) {
return x * 42;
};
}
calc(1337); // Uncaught ReferenceError: "calc" is not defined
이와 관련된 자세한 내용은 클로저(Closures)를 통해 이해해 보도록 하자.
Reference