개발/코드

[Javascript] 고차함수 구현 예시

Grara 2023. 6. 1. 23:04

요즘에는 데코레이션이라는 기능이 있지만, 그 이전에는 어떤 방식으로 이 기능을 구현했을까 문득 의문이 들어 고차함수를 이용해 만들어보았다. 어떤 함수라도 해당 방식을 이용해 새로운 함수를 생성해서 사용한다면 함수 실행 전과 후에 "Start"와 "End"가 나타날 것이고, args를 통해 전달된 매개변수들도 활용할 수 있게 된다.

function withStartAndEndLogging(func) {
  return function(...args) {
    console.log("Start");
    func.apply(this, args);
    console.log("End");
  }
}

// 예시 함수
function myFunction(name) {
  console.log("Hello, " + name + "!");
}

// 새로운 함수 생성
let decoratedFunction = withStartAndEndLogging(myFunction);

// 함수 실행
decoratedFunction("John");
/* 결과 :
Start
Hello, John!
End
*/