Javascript & React

[Javascript] 일급 객체, Callback함수, 고차함수

Hoo_Dev 2022. 12. 23. 11:39

일급객체 (first class citizen)

  • 변수에 할당(assignment)할 수 있다.
  • 다른 함수를 인자(argument)로 전달 받는다.
  • 다른 함수의 결과로서 리턴될 수 있다.

 

일급객체가 할 수 있는 것?

  • 고차함수(Higher order function)를 만들 수 있다.
  • 콜백(callback)을 사용할 수 있다.

 

그래서 고차함수(Higher order function)란?

  • 함수를 전달인자 또는 매개변수로 받거나 함수를 리턴하는 함수
  • ex) Array.prototype.map,  Array.prototype.filter,  Array.prototype.reduce

 

그래서 콜백(callback)이란?

  • 바로 실행되진 않지만 다른 함수의 입력 값으로 전달 되고, 다른 함수에 의해서 나중에 호출 되는 함수
function firstClassFunc(count, apple, potato) {
  count < 3 ? apple() : potato();
}

function func1() {
  console.log('사과');

}

function func2() {
  console.log('감자')
}

firstClassFunc(2, func1, func2);
  • 고차함수인 firstClassFunc에서 사과를 출력하는 fun1과, 감자를 출력하는 fun2를 매개변수로 사용하여 고차함수에 넘겨준다.
  • 이를 통해 알 수 있는 것은 fun1과 fun2는 콜백함수이며, firstClassFunc는 일급객체이자 고차함수 인 것을 알 수 있다.