본문 바로가기
개발/JavaScript

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

by WaDDak 2024. 8. 13.

함수가 일급 객체로 취급되는 5가지 경우.

 

1. 변수에 함수를 할당

함수는 변수에 할당할 수 있습니다. 함수는 값으로 취급되기 때문에, 다른 변수와 마찬가지로 변수에 할당할 수 있습니다.

변수에 할당된 함수는 나중에 사용할 수 있습니다.

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

sayHello(); // "Hello!" 출력

// 그냥 함수를 선언하는 방식에 있던것 중 하나로 변수명을 먼저 선언하고 거기에 함수를 할당할 수 있었다.

 

2. 함수를 인자로 다른 함수에 전달.

함수는 다른 함수에 인자로 전달될 수 있습니다. 함수가 값으로 취급되기 때문에, 다른 함수의 인자로 전달할 수 있습니다.

이것은 콜백이나 고차 함수를 작성하는 데 사용됩니다.

function callFunction(func) {
  func();
}

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

callFunction(sayHello); // "Hello!" 출력

/// 말그대로의 의미이다. C++에서도 사용하던 콜백함수를 JS에서도 사용할 수 있다.

 

 

3. 함수를 반환

함수는 다른 함수에서 반환될 수 있습니다. 함수는 값으로 취급되기 때문에, 다른 함수에서 반환할 수 있습니다. 이것은 함수 팩토리나 클로저를 작성하는 데 사용됩니다.

function createAdder(num) {
  return function(x) {
    return x + num;
  }
}

const addFive = createAdder(5);
console.log(addFive(10)); // 15 출력

/// 조금 헷갈렸던 부분인데 함수를 리팩토링하여 좀더 사용하기 쉽게 만들어 나갈 수 있는 느낌인 것 같다.

 

4.객체의 프로퍼티로 함수를 할당

함수는 객체의 프로퍼티로 할당될 수 있습니다. 객체의 메소드로 함수를 호출할 수 있습니다.

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

person.sayHello(); // "Hello, my name is John" 출력

/// html로 웹사이트를 만들때도 사용해본적 있던 방식인데 `(백틱)안에서 ${}구문을 통해 변수등을 넣을 수 있다.

 

 

5. 배열의 요소로 함수를 할당

함수는 배열의 요소로 할당될 수 있습니다. 이것은 함수를 배열에서 사용할 수 있게 합니다.

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

console.log(myArray[0](5, 10)); // 15 출력
console.log(myArray[1](10, 5)); // 5 출력

/// 배열에도 함수를 집어넣을 수 있다. 이는 배열에 접근하듯이 사용하면 된다.

 

 

이처럼 함수를 일급객체로 다룰 수 있다는 것은, 코드를 더 간결하고 모듈화된 형태로 작성할 수 있게 해줍니다.

또한 다양한 함수의 조합을 통해 새로운 함수를 반환하는 함수를 작성한다면 더 복잡한 기능도 구현할 수 있다.

 

'개발 > JavaScript' 카테고리의 다른 글

[JS] 데이터 타입의 종류  (0) 2024.08.20
[JS] Map과 Set  (0) 2024.08.13
[JS] 객체 메소드  (0) 2024.08.12
[JS] C++과 다른 기본 문법들  (0) 2024.08.12
[JS] 변수  (0) 2024.08.11