본문 바로가기
Computer Science/JavaScript

자바스크립트 Chapter 22 High Order Functions

by Write and Remember 2019. 5. 15.

 

모든 자바스크립트 개발자가 알아야 하는 33가지 개념

 

Chapter 22 High Order Functions

 

HOF(고차 함수)에 대해 알아보자.

 

고차 함수(High Order Functions)에 대해 알기 전에

 

Functional Programming(함수형 프로그래밍)

 

First-Class Functions(일급 함수)

 

알아보자.

 

함수형 프로그래밍이 뭘까?

 

함수를 다른 함수에 매개 변수로 전달하고

 

값으로 반환할 수 있는 프로그래밍 형식이다.

 

First-Class Functions(일급 함수)

 

자바스크립트 함수에서는 특별한 유형의 함수 객체가 있다.

 

function hello() {
  console.log('Hello');
}

hello(); // Hello

 

함수가 객체를 증명하기 위해

 

hello.next = 'Everyone';

console.log(hello.next) // Everyone

 

next라는 속성(property)에 Everyone을 넣어보았고

 

정상 작동한다.

 

자바스크립트에서는 위뿐만이 아니라 모든 작업은

 

함수로 수행이 가능하고

 

그것들을 다른 함수(콜백)에 매개 변수로 전달하고

 

변수에 할당하고 전달할 수 있다.

 

그래서 자바스크립트 함수는 First-Class Functions라고 한다.

 

변수에 함수 할당하기

 

const sum = function(x, y) {
  return x + y;
}

sum(3, 2) // 5

 

위의 sum 함수를 전달하기

 

const pass = sum

pass(10, 10) // 20

 

함수를 다른 함수에 매개 변수로 전달하기

 

function firstGreeting() {
  console.log("Hello");
}
function secondGreeting() {
  console.log("How's today?");
}
function greet(type, greetFirst, greetSecond) {
  if(type === 'formal') {
    greetFirst();
  } else if(type === 'casual') {
    greetSecond();
  }
}
greet('casual', firstGreeting, secondGreeting); // How's today?

 

High Order Functions

 

그럼 고차 함수란 뭘까?

 

다른 함수를 인수로 가져오거나 반환하는 등의

 

다른 함수에서 작동하는 함수이다.

 

즉 함수를 인수로 받거나

 

함수를 출력으로 반환하는 함수이다.

 

Chapter 19에서 다룬 Array.prototype.map, reduce, filter 등도

 

내장된 고차 함수(High Order Functions)이다.

 

2019/05/12 - [Computer Science/JavaScript] - 자바스크립트 Chapter 19 map, reduce, filter

 

자바스크립트 Chapter 19 map, reduce, filter

모든 자바스크립트 개발자가 알아야 하는 33가지 개념 Chapter 19 map, reduce, filter Chapter 17에서 프토토타입 상속과 체인을 다룰 때 Array.prototype을 살펴본 적이 있다. Array.prototype // [constructor..

jeongw00.tistory.com

댓글0