First-class Function - 일급 함수

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()();

 

반응형

'과거' 카테고리의 다른 글

웹 기초  (0) 2021.09.07
성능 최적화  (0) 2021.09.06
[JS] Object property order  (0) 2021.07.13
[JS] typeof null, null instanceof Object  (0) 2021.07.13
details marker 제거  (0) 2021.07.13
'과거' 카테고리의 다른 글
  • 웹 기초
  • 성능 최적화
  • [JS] Object property order
  • [JS] typeof null, null instanceof Object
optimy
optimy
See one, do one, teach one
  • optimy
    공자천주
    optimy
  • 전체
    오늘
    어제
    • All posts (27)
      • Note (4)
      • Book (0)
      • Do one (0)
      • Teach one (0)
      • 과거 (23)
  • 블로그 메뉴

    • 링크

      • github
    • 공지사항

    • 인기 글

    • 태그

      Sync & Async
      복사한것저장
      창 그룹화
      JavaScript
      캡처후저장
      State Control
      프론트엔드 개발환경
      능동적 태도
      개발자 도구 활용
      이벤트 위임
      구현 패턴
      콜맥
      version specifications
      브라우저 렌더링
      details marker 제거
      쿼티
      이미지파일저장
      날개셋 한글 입력기
      탭 관리 프로그램
      Runtime Execution
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.0
    optimy
    First-class Function - 일급 함수
    상단으로

    티스토리툴바