일급객체란?
- 변수에 할당할 수 있음: 일급 객체는 변수에 할당될 수 있습니다.
- 함수의 인자로 전달 가능: 함수나 메서드의 인자로 전달할 수 있습니다.
- 함수의 반환 값으로 사용할 수 있음: 함수의 반환 값으로 사용할 수 있습니다.
- 동적 생성 가능: 실행 중에 동적으로 생성될 수 있습니다.
뭔 소리지.... 🤷♀️ 암튼 함수를 할당하고 할당하고 또 할당할 수 있다는 얘기 같은데....
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번째 뺄셈 함수식에 대한 값
'자바스크립트 강의' 카테고리의 다른 글
| [JavaScript] 3주차 - 과제 수행 (불변 객체(얕은 복사), this) (4) | 2024.10.14 |
|---|---|
| [JavaScript] 2주차 - Map, Set (0) | 2024.10.11 |
| [JavaScript] 2주차 - property shothand, spread operator, rest parameter, template literal (0) | 2024.10.10 |
| [JavaScript] 2주차 - 구조분해할당 (0) | 2024.10.10 |
| [JavaScript] 1주차 - while, do ~ while, break, continue (0) | 2024.10.10 |