First-class Function

💡 First-class Function(일급함수)란?
프로그래밍 언어는 해당 언어의 함수들이 다른 변수처럼 다루어질 때 일급 함수라고 한다.
Javascript는 위의 해당 언어중 하나로, Javascript에서 사용되는 함수는 일급 함수라고 할 수 있을 것 같다.

아래와 같은 3가지 조건을 만족해야 일급함수라고 할 수 있다.

  1. 함수를 변수에 할당 가능하다.
  2. 다른함수에 매개변수로 함수를 전달 할 수 있다. (콜백함수)
  3. 함수를 반환 할 수 있다. (고차함수)

1. 함수를 변수에 할당 가능하다.

// 1. 함수를 func라는 변수에 할당
const func = () => {
  return 'Test'
}
 
// 2. 변수를 사용해 호출할 수 있다.
func()

2. 다른함수에 매개변수로 함수를 전달 할 수 있다. (callback함수)

아래 예제1. 처럼 Javascript에서 제공하는 내장함수 setTimeout()를 사용 할 때,

첫번째 인자로 () => { console.log("Hello world") } 라는 함수를 인자로 호출하고 있는 것을 확인 할 수 있다.

// 예제 1.
setTimeout(() => {
  console.log('Hello world')
}, 1000)

아래 예제 2. 에서는 함수 sayHello를 전달인자로 greeting 함수에 전달 하고 있는 것을 확인 할 수 있다.

// 예제 2.
function sayHello() {
  return 'Hello, '
}
 
function greeting(helloMessage, name) {
  console.log(helloMessage() + name)
}
 
// 함수 sayHello를 전달인자로 greeting 함수에 전달 할 수 있다.
greeting(sayHello, 'World!') // Hello, World!

📗 다른 함수에 전달인자로 전달하는 함수를 콜백 함수라고 한다. 여기서 sayHello()는 콜백 함수이다.

3. 함수를 반환 할 수 있다. (고차함수)

아래 예제에서, sayHello 함수로부터 함수 (str2) => { console.log(str1 + str2); } 를 반환하고 있다.

자바스크립트에서 함수들은 값들로서 다루어질 수 있기 때문에 함수를 반환할 수 있다.

function sayHello(str1) {
  return (str2) => {
    console.log(str1 + str2)
  }
}
 
// helloFn 에 (str2) => { console.log(str1 + str2); }라는 함수가 할당됨
const helloFn = sayHello('Hello, ')
 
// Hello, world!가 출력됨
helloFn('world!')

📚 출처

profile

Park Cheol Hwi

Copyright ©2024 kcjfgnl9205 All rights reserved.