[JavaScript] 일급 객체로서의 함수

자바스크립트에서 함수는 일급 객체(First-Class Object)라고 하며, 일급객체란 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 의미한다. 즉, 함수를 객체처럼 여러가지 방식으로 다룰 수 있다!

 

변수에 함수를 할당할 수 있다

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

 

 

함수를 다른 함수의 인자로 전달할 수 있다

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

function callFunction(func) {
  func();
}

callFunction(sayHello);  // Hello 출력

 

  • 콜백함수: 매개함수로 쓰이는 함수
  • 고차함수: 함수를 인자로 받거나 return 하는 함수
더보기
// 함수를 return 하는 예시
function createAdder(num) {
  return function(x) {
    return x + num;
  };
}

const addFive = createAdder(5);
// addFive에 아래와같은 함수가 대입됨
// function(x) { return x + 5; }

console.log(addFive(10));  // 15

 

 

함수는 객체의 value가 될 수 있다

const person = {
  name: 'Kim',
  sayHello: function() {
    console.log(`Hello, My name is ${this.name}.`);
  },
}

person.sayHello();  // Hello, My name is Kim.

 

 

 

함수는 배열의 요소가 될 수 있다

const myArr = [
  function (a, b) {
    return a + b;
  },
  function (a, b) {
    return a - b;
  },
];

console.log(myArr[0](1, 3));  // 4