SeouliteLab

[JS/JavaScript] 일급 객체: 함수와 데이터의 동등성 본문

프로그래밍

[JS/JavaScript] 일급 객체: 함수와 데이터의 동등성

Seoulite Lab 2024. 2. 27. 16:31

JavaScript에서 함수는 일급 객체(First Class Object)로 취급된다. 이것은 함수가 다른 데이터 유형과 마찬가지로 변수에 할당, 함수의 인자로 전달, 함수의 반환값으로 사용되고, 동적으로 생성될 수 있음을 의미한다. 이러한 특성은 JavaScript를 함수형 프로그래밍 언어로 만드는 핵심적인 특징 중 하나다.

일급 객체로서의 함수는 다음과 같은 특징을 가진다:

  • 변수에 할당될 수 있음: 함수는 변수에 할당될 수 있으며, 이를 통해 함수를 다른 함수의 인자로 전달하거나, 다른 함수의 반환값으로 사용할 수 있다.
    • var greet = function(name) {
        console.log('Hello, ' + name + '!');
      };
      
      var myFunction = greet;
      myFunction('Alice'); // 출력: Hello, Alice!​
  • 함수의 인자로 전달될 수 있음: 함수는 다른 함수의 인자로 전달될 수 있습니다. 이를 통해 콜백 함수를 사용하여 비동기 작업을 처리하거나, 고차 함수를 생성할 수 있다.
    • function processCallback(callback) {
        callback();
      }
      
      function myCallback() {
        console.log('This is a callback function!');
      }
      
      processCallback(myCallback); // 출력: This is a callback function!
  • 함수의 반환값으로 사용될 수 있음: 함수는 다른 함수의 반환값으로 사용될 수 있습니다. 이는 함수가 다른 함수 내에서 동적으로 생성되거나 반환될 수 있음을 의미한다.
    • function createGreeter() {
        return function(name) {
          console.log('Hello, ' + name + '!');
        };
      }
      
      var greetFunction = createGreeter();
      greetFunction('Bob'); // 출력: Hello, Bob!
  • 동적으로 생성될 수 있음: JavaScript에서는 함수를 동적으로 생성할 수 있습니다. 이는 함수 표현식, 익명 함수, 화살표 함수 등을 사용하여 함수를 생성할 수 있음을 의미한다.
    • var dynamicFunction = function() {
        console.log('This is a dynamically created function!');
      };
      
      dynamicFunction(); // 출력: This is a dynamically created function!

 

이러한 특징들은 JavaScript에서 함수를 데이터와 동일한 대우를 받게 하며, 함수형 프로그래밍 스타일을 채택할 수 있도록 한다. 따라서 JavaScript의 함수는 높은 유연성과 강력한 기능을 제공하여 복잡한 로직을 구현하는 데 도움이 된다.

JavaScript에서 일급 객체로서의 함수는 함수형 프로그래밍 패러다임을 적용하고, 코드의 재사용성과 유지보수성을 높이는데 중요한 역할을 한다.