처음부터 차근차근

일급 객체로서의 함수 본문

Language/JavaScript

일급 객체로서의 함수

HangJu_95 2023. 5. 25. 13:30
728x90

JS에서 함수는 일급 객체(First-Class Object)라고 한다.

- 일급객체란 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 가리킨다.

=> 함수를 매우 유연하게 사용할 수 있다.

 

1) 변수에 함수를 할당

함수가 마치 값으로 취급된다.

나중에 사용될 수 있도록 조치가 되었다.

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

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

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

// 2-1 callback 함수 : 매개변수로써 쓰이는 함수
// 2-2 고차 함수 : 함수를 인자로 받거나 return하는 함수

function callFunction(func) {
    // 매개변수로 받은 변수가 사실, 함수다.
    func();
};

// 콜백 함수로 사용되는 함수
const sayHello = function() {
    console.log('Hello!');
};
 
callFunction(sayHello); // "Hello!" 출력

3) 함수를 반환할 수 있다.

함수는 값으로 취급되기 때문에, 다른 함수에서 반환할 수 있습니다.

// 3. 함수를 반환할 수 있다.

function createAdder(num) {
    return function(x) {
      return x + num;
    }
  }
 
const addFive = createAdder(5);
// => const addFive = function (x){
//   return x + 5;
// }

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

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

 

// 4. 객체의 프로퍼티로 함수를 할당
const person = {
  name: 'John',
  age : 31,
  isMarried : true,
  sayHello1: function() {
    console.log(`Hello, my name is ${this.name}`);
  },
  sayHello2 : () => { // 이 경우는 undefined로 나온다. 주의! (화살표함수는 this를 바인딩 하지 않는다!)
    console.log(`Hello, my name is ${this.name}`);
  }
};

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

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

 

// 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 출력

 

 

'Language > JavaScript' 카테고리의 다른 글

[코어 자바스크립트] JavaScript 데이터 타입(심화)  (0) 2023.05.28
Map과 Set  (0) 2023.05.25
ES6 문법  (1) 2023.05.25
배열, 배열 메소드  (1) 2023.05.24
객체 메소드  (0) 2023.05.24