JavaScript/study

[javascript] ⭐⭐⭐⭐⭐ 자바스크립트 함수는 일급 객체로 간주됨

아2 2023. 5. 22. 19:54
일급객체(First-class Object)란 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 가리킨다. [위키백과]

 

 

자바스크립트의 함수는 일급 객체로서 다른 객체와 동등한 취급을 받는다.

이는 함수를 다양한 상황에서 유연하게 활용할 수 있다는 의미이며, 함수형 프로그래밍의 기반이 되는 특징이다.

함수를 일급 객체로 취급하는 것은 자바스크립트에서 강력하고 다양한 기능을 구현할 수 있도록 한다.

 

특징은 다음과 같다!!!

 

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

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

이 특징때문에 생기는 일:

 1. 콜백함수 - 매개변수로써 쓰이는 함수

 2. 고차함수 : 함수를 인자로 받거나 return하는 함수(가 대체함)

 

 

2. 매개변수로 전달할 수 있따.

함수는 다른 함수의 매개변수로 전달될 수 있다.

이를 통해 함수를 다른 함수의 동작에 적용할 수 있다.

function greet(name) {
  console.log(`Hello, ${name}!`);
}

function processGreeting(callback) {
  callback('John');
}

processGreeting(greet); // 'Hello, John!'

 

3. 반환값으로 사용할 수 있다.

function createMultiplier(factor) {
  return function(number) {
    return number * factor;
  };
}

const double = createMultiplier(2);
console.log(double(5)); // 10

 

 

4. 객체의 속성이나 배열의 요소로 사용할 수 있다.

함수는 객체의 속성이나 배열의 요소로 사용될 수 있으며, 필요에 따라 동적으로 호출될 수 있다.

// 객체의 프로퍼티로 함수를 할당
const person = {
  name: 'John',
  sayHello: function() {
    console.log(`Hello, my name is ${this.name}`);
  }
};

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


// 배열의 요소로 함수를 할당
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 출력

 

ex. 이렇게 활용할 수 있다.

// 고차함수
function multiplyBy(num) {
  return function(x) {
    return x * num;
  }
}

function add(x, y) {
  return x + y;
}

const multiplyByTwo = multiplyBy(2);
const multiplyByThree = multiplyBy(3);

const result = add(multiplyByTwo(5), multiplyByThree(10)); // 35 출력