Language/JavaScript

자바스크립트 일급함수

SambaLim 2019. 8. 2. 23:53

유인동님의 함수형 자바스크립트 프로그래밍을 시작하며

자바스크립트의 함수와 관련된 몇 가지 기능들에 대해 알아보고자 한다.

일급함수

자바스크립트의 함수는 일급 객체이자 일급 함수이다. 일급이라는 말이 직해하기는 다소 어렵다. 따라서 일급의 조건을 먼저 알아보면 다음과 같다.

  • 변수에 담을 수 있다.
  • 함수나 메서드의 인자로 넘길 수 있다.
  • 함수나 메서드에서 리턴할 수 있다.

그렇다면 일급 함수를 만족하기 위해서는 어떤 조건들이 필요한지 알아보자.

  • 아무 때나(런타임에서도) 선언이 가능하다.
  • 익명으로 선언할 수 있다.
  • 익명으로 선언한 함수도 함수나 메서드의 인자로 넘길 수 있다.

예시

function fnExample1() {}
var a = typeof fnExample1 == 'function' ? fnExample1 : function() {};

typeof연산자를 이용하여fnExample1이 함수(function)인지 확인하고, 변수 afnExample1을 담아주는 예제이다.

function fnExmaple2() {
    return function() {};
}

fnExample2는 함수를 리턴하는 함수이다.

(function(a, b) {return a + b;})(10, 5);

a와 b를 더하는 익명 함수를 선언하였으며, a와 b에 각각 10, 5를 전달하여 즉시 실행하였다.

익명 함수는 이름이 없는 함수로 즉시 실행이 필요할 경우 사용한다.

function callAndAdd(a, b) {
    return a() + b();
}
callAndAdd( function() {return 10;}, function() {return 5;})

callAndAdd를 실행하며 익명 함수들을 선언하였고 바로 인자로 사용되었다.

callAndAdd는 넘겨받은 함수 a, b를 실행하여 결과들을 더한다.

'Language > JavaScript' 카테고리의 다른 글

자바스크립트 고차함수  (0) 2019.08.27
자바스크립트 클로저  (0) 2019.08.08
자바스크립트 스코프  (0) 2019.08.03
자바스크립트의 프로토타입  (0) 2019.05.24
2019년의 JavaScript ES2019 예상  (0) 2019.01.27