[ 기술 스터디 ] 일급 함수란

김민석·2021년 7월 22일
0

기술 스터디

목록 보기
16/18

참고
MDN - 일급함수
함수를 다른 변수와 동일하게 다루는 언어는 일급 함수를 가졌다고 표현한다. 예를 들어, 일급 함수를 가진 언어에서는 함수를 다른 함수에 매개변수로 제공하거나, 함수가 함수를 반환할 수 있으며, 변수에도 할당할 수 있다.

즉! 함수를 일급 객체로 간주한다는 뜻이다.
일급 객체에 대해 썼던 과거 블로그!

정리하고 넘어가자면, 1급 객체의 조건은 다음과 같다.

  1. 변수나 데이터에 할당 가능
  2. 객체의 인자로 넘기기 가능
  3. 객체의 리턴값으로 리턴 가능

1. 변수나 데이터에 할당 가능

const square = function (num) {
	return num * num
}

함수 표현식을 생각하면 된다.

2. 객체의 인자로 넘기기 가능

이 특성 때문에 callback 함수가 사용 가능해진다.

function square(num) {
  return num * num;
}

// func는 매개변수임, 이름은 아무거나 지정해도 상관없음
function squareNum(func, number) {
  return func(number);
}

let result = squareNum(square, 3)

3. 객체의 리턴값으로 리턴 가능

const squareFactory = (func)=>{
	
  return (num)=>{
    
  	func(num)
  }
}

const factory = squareFactory(square)
factory(3) // 9

위의 예시에서 볼 수 있었지만 함수가 일급 객체이기 때문에 할 수 있는 일들이 생겼다. 그것들에 대해 더 작성할 것이다.

고차함수(Higer Order Function)

함수가 인자로 함수를 받거나 함수를 리턴하는 함수

위에서 구현헀던 이 코드를 보면 된다.

const squareFactory = (func)=>{
	
  return (num)=>{
    
  	func(num)
  }
}

const factory = squareFactory(square)
factory(3) // 9

squareFactory 함수는 함수를 인자로 받아 새로운 함수를 리턴하는 고차함수다.

콜백함수(callback)

인자로 들어가는 함수!

router.get('/', (req,res)=>{
  ...
})

0개의 댓글