자바스크립트 강의

[JavaScript] 2주차 - 일급객체로서의 함수

notion0896 2024. 10. 10. 22:01

일급객체란?

 

  • 변수에 할당할 수 있음: 일급 객체는 변수에 할당될 수 있습니다.
  • 함수의 인자로 전달 가능: 함수나 메서드의 인자로 전달할 수 있습니다.
  • 함수의 반환 값으로 사용할 수 있음: 함수의 반환 값으로 사용할 수 있습니다.
  • 동적 생성 가능: 실행 중에 동적으로 생성될 수 있습니다.

뭔 소리지....  🤷‍♀️ 암튼 함수를 할당하고 할당하고 또 할당할 수 있다는 얘기 같은데....

function add(num){ // add라는 이름을 가진 함수에 num이라는 매개변수를 대입해주고
  return function(x){ // 한번 더 함수로 return을 해줘서
    return x + num; // 그 값이 x와 add(num)의 합이 되게 하라
  }
}

const addNum = add(5); 

// function add(5){
  return function (x){
    return x + 5
  }
}


console.log(addNum(10)); 

// function add(5){
  return function (10){
    return 10 + 5
  }
} 
// 값은 15가 나옴
function multiplyBy (num) {
    return function (x){
        return x * num;
    }
};

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


const multiplyByTwo = multiplyBy(2)
// =>
function multiplyBy (2) {
    return function (x){
        return x * 2;
    }
};

const multiplyByThree = multiplyBy(3)
// => 
function multiplyBy (3) {
    return function (x){
        return x * 3;
    }
};

console.log(multiplyByTwo(10)) // 20
// => 
function multiplyBy (2) {
    return function (10){
        return 10 * 2;
    }
};
console.log(multiplyByThree(10)) // 30
// =>
function multiplyBy (2) {
    return function (10){
        return 10 * 2;
    }
};

const final = add(multiplyByTwo(5), multiplyByThree(5)) 
// =>
function add(multiplyByTwo(5),multiplyByThree(5)){
  return multiplyByTwo(5) + multiplyByThree(5)
};

console.log(`final = ${final}`) // final = 25

 

어쨋든 함수를 함수로 한번 더 할당이 가능하고 그 함수가 또 함수로 할당이 가능하고... 무한대 함수.... 이것이 일급객체로써의 함수인것이냐..... 와씨 어렵네

 

배열의 요소로써 함수를 할당하기

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

console.log(arr[0](10,5)) // 15 => 0번째 덧셈 함수식에 대한 값
console.log(arr[1](20,10)) // 10 => 1번째 뺄셈 함수식에 대한 값