자바스크립트에서 함수를 반환하는 함수
문자열을 반환하는 다음과 같은 함수가 있다고 가정해 보겠습니다:
function func() {
return '!';
}
let result = func();
console.log(result); // '!'가 출력됨
이제 문자열 대신, 비슷한 방식으로 익명 함수를 반환해 보겠습니다:
function func() {
return function() {
return '!';
};
}
let result = func(); // 변수 result에는 함수가 들어감
console.log(result); // 'function() {return '!';}'가 출력됨
보시다시피, 변수 result는
이제 함수가 되었습니다. 이 함수의 실행 결과를
콘솔에 출력해 봅시다. 이를 위해 괄호를 붙여 호출합니다:
function func() {
return function() {
return '!';
};
}
let result = func();
console.log( result() ); // '!'가 출력됨
func() 호출이 함수를 반환하기 때문에,
반환된 함수를 즉시 호출할 수 있습니다.
이렇게요: func()() - 첫 번째 괄호는
함수 func의 결과(그 자체가 함수인)를 얻고,
두 번째 괄호는 func의 결과에 적용됩니다.
한번 시도해 보겠습니다:
function func() {
return function() {
return '!';
};
}
console.log( func()() ); // '!'가 출력됨
func1()()와 같이 호출했을 때
숫자 1을 반환하는 함수 func1을 만드세요.
숫자 2을 반환하는 비슷한 함수 func2도 만드세요.
이 두 함수의 결과값의 합을 구하세요.