nickmorohe 2022. 11. 6. 15:21

1.  일급 함수 

다른 변수와 동일하게 다루는 함수 

일급 함수를 가진 언어에서는 함수를 다른 함수에 인수로 제공하거나, 함수가 함수를 반환할 수 있으며, 변수에도 할당 할 수 있음

 

2.  변수에 함수 할당

익명함수를 변수에 할당한 다음, 그 변수를 사용하여 끝에 괄호 ()를 추가하여 함수를 호출

const foo = function() {
   console.log("foobar");
}
// 변수를 사용해 호출
foo();

 

3.  함수를 인자로 전달

function sayHello() {
   return "Hello, ";
}
function greeting(helloMessage, name) {
  console.log(helloMessage() + name);
}
// `sayHello`를 `greeting` 함수에 인자로 전달
greeting(sayHello, "JavaScript!");

 

콜백 함수 : 다른 함수에 인자로 전달된 함수 , 위의 예시에서 sayHello가 greeting함수의 인자로 전달되어 콜백 함수

 

 

4.  함수 반환

function sayHello() {
   return function() {
      console.log("Hello!");
   }
}

고차 함수 : 함수를 반환하는 함수, 위에서 sayHello함수 안에 리턴 값으로 익명 함수가 들어갔을 때  sayHello는 고차함수

 

(1) 함수를 호출 했을 때 반환하는 익명 함수를 호출하는 방법

 

    1) 변수 사용

const sayHello = function() {
   return function() {
      console.log("Hello!");
   }
}
const myFunc = sayHello();
myFunc();

위와 같이 실행하면 익명함수가 실행되어 Hello! 메세지가 출력 됩니다.

만약, sayHello 함수를 직접 호출하면, 반환된 함수를 호출하지 않고 함수 자체를 반환합니다. 그렇기에 반환함수를 다른 변수에 저장하여 사용해야 합니다.

 

    2) 이중 괄호 사용

function sayHello() {
   return function() {
      console.log("Hello!");
   }
}
sayHello()();

이중 괄호 ()()를 사용해 함수를 호출할 수 있습니다.