What got you here won't get you there

First-class Function - 일급 함수 본문

Web App

First-class Function - 일급 함수

optimy 2021. 9. 7. 14:17

프로그래밍 언어가 함수를 다른 변수들처럼 취급할 수 있을 때, 이 언어를 일급 함수를 가진 언어라고 할 수 있다.

즉, 함수가 다른 변수처럼 사용될 때의 함수를 일급 함수라고 부른다.

변수에 함수 할당

const foo = () => { console.log("foobar"); }

// 변수를 통해 호출
foo();

익명 함수를 변수에 할당할 수 있고, 변수를 이용해 함수를 호출할 수 있다.

익명 함수가 아니어도 할당과 호출이 가능하다. 함수에 이름을 주는 것은 디버딩에 도움이 되지만 함수 호출에 영향을 주지는 않는다.

함수를 인자로 전달

function sayHello() { 
  return "Hello, "; 
}
function greeting(helloMessage, name) { 
  console.log(helloMessage() + name); 
}

// `sayHello` 함수를 `gretting` 함수의 인자로 전달
gretting(sayHello, "JavaScript!");

sayHello 함수를 greeting 함수의 인자로 전달한다. 이는 함수를 값으로 취급함을 의미한다.

다른 함수한테 인자로 전달한 함수를 콜백 함수(Callback Function)라고 부른다.

함수를 반환

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

함수는 다른 함수를 반환할 수 있다. - 함수를 값으로 취급하기 때문이다.

함수를 반환하는 함수를 고차 함수(Higher-Order Function)라고 부른다.

sayHello 함수를 호출하면 익명 함수를 반환한다. 이 함수를 사용할 두 가지 선택지가 있다.

1 - 변수에 할당하여 사용

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

2 - 두 번의 함수 호출 사용

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

 

'Web App' 카테고리의 다른 글

웹 기초  (0) 2021.09.07
성능 최적화  (0) 2021.09.06
[JS] Object property order  (0) 2021.07.13
Non-blocking JavaScript - 1  (0) 2021.06.17
JavaScript - 1 (Version Specifications)  (0) 2021.06.17
Comments