롸?

일급 함수 본문

WEB/JavaScript & jQuery

일급 함수

허니버터새우깡 2020. 3. 2. 14:57

프로그래밍 언어에서 어떤 대상이 일급이라는 것은 그 대상이 다음 세 가지 조건을 만족한다는 것을 의미한다.

 

함수 호출의 인자로 사용될 수 있다.

함수의 결괏값으로 사용될 수 있다.

대입 연산을 통해서 변수가 가리키는 대상으로 지정될 수 있다.

 

간단히 말하자면, 함수를 변수로 저장할 수도 있고, 다른 함수에 파라미터로 전달 하고 반환 받을 수도 있으면 일급 함수에 속한다.

자바스크립트의 함수는 대표적인 일급 함수 중 하나에 속한다.

 

 

예제1) 변수에 함수 할당

const foo = function() {
   console.log("foobar");
}
// 변수를 사용해 호출
foo();

익명함수를 변수에 할당한 다음, 그 변수를 사용해 끝에 괄호를 추가하여 함수를 호출함.

함수가 이름을 가지고 있더라도 변수에 할당하여 변수 이름으로 호출 할 수 있다.

 

 

 

예제2) 함수를 인자로 전달

function sayHello() {
   return "Hello, ";
}
function greeting(helloMessage, name) {
  console.log(helloMessage() + name);
}
// `sayHello`를 `greeting` 함수에 인자로 전달
greeting(sayHello, "JavaScript!");

sayHello() 함수를 greeting() 함수의 인자로 전달함.

다른 함수에 인자로 전달된 함수를 콜백함수 라고 한다. 여기서 sayHello()가 콜백함수 

 

 

예제3) 함수 반환

함수를 반환하는 함수를 고차함수라고 한다.

 

 

3-1) 함수 반환 : 변수 사용

const sayHello = function() {
   return function() {
      console.log("Hello!");
   }
}
const myFunc = sayHello();
myFunc();

sayHello() 함수를 호출 시, Hello!를 출력하는 익명함수를 반환함. 이를 myFunc 변수에 할당하여 호출.

만약에 sayHello()를 직접 호출하면 반환된 함수를 호출하지 않고 함수 자체를 반환함. 그러므로 반환된 함수를 다른 변수에 저장해서 사용해야함. 

 

 

 

3-2) 함수 반환 : 이중 괄호 사용

function sayHello() {
   return function() {
      console.log("Hello!");
   }
}
sayHello()();

  

  

  

 


참고 

1.  위키피디아 일급 객체

2.  https://developer.mozilla.org/ko/docs/Glossary/First-class_Function

 

'WEB > JavaScript & jQuery' 카테고리의 다른 글

자바스크립트 화살표 함수  (0) 2020.03.12
jQuery  (0) 2020.03.12
자바스크립트 이벤트 핸들링  (0) 2020.03.11
자바스크립트 스코프 호이스팅  (0) 2020.03.10
함수형 프로그래밍  (0) 2020.03.02
Comments