일급 객체로서의 함수 [ Javascript ] [ JavaScript 문법 종합반 2주차 ]
2023. 6. 13. 18:00ㆍ항해99/JavaScript 문법 종합반
// 일급 객체로서의 함수
// 일급객체(First-Class Object) 란 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 가리킨다.
// 함수가 일급 객체로 취급되는 5가지 경우
// 1 변수를 함수를 할당
// 함수가 마치 값으로 취급된다.
// 함수가 나중에 사용될 수 있도록 조치가 되었다.
const sayHello = function () {
console.log("Hello");
};
sayHello(); // Hello
// 2 함수를 인자로 다른 함수에 전달할 수 있다.
// 콜백함수 : 매개변수로서 쓰이는 함수
// 고차함수 : 함수를 인자로 받거나 return 하는 함수
function callFunction(func) {
// 매개변수로 받은 변수가 사실 함수다.
func();
}
callFunction(sayHello);
// 3 함수를 반환할 수 있다.
function createAdder(num) {
return function (x) {
return x + num;
};
}
const addFive = createAdder(5);
console.log(addFive(10)); // 15
// 일급 객체로서의 함수 ========================
const person = {
name: "john",
age: 31,
isMarried: true,
sayHello: function () {
console.log(`Hello my name is ${this.name}`); // Hello my name is john
},
// sayHello: () => { // 화살표함수는 this 를 바인딩 하지 않는다.
// console.log(`Hello my name is ${this.name}`); // Hello my name is undefined
// }
};
person.sayHello();
// 배열의 요소로 함수를 할당 ==========================
const myArr = [
function (a, b) {
return a + b;
},
function (a, b) {
return a - b;
},
];
console.log(myArr[0](1, 3)); // 4
console.log(myArr[1](10, 7)); // 3
function multiplyBy(num) {
return function (x) {
return x * num;
};
}
function add(x, y) {
return x + y;
}
const multiplyByTwo = multiplyBy(2);
const multiplyByThree = multiplyBy(3);
console.log(multiplyByTwo(10)); // 20
console.log(multiplyByThree(10)); // 30
const result = add(multiplyByTwo(5), multiplyByThree(10));
console.log(result); // 40
'항해99 > JavaScript 문법 종합반' 카테고리의 다른 글
Map [ Javascript ] [ JavaScript 문법 종합반 2주차 ] (0) | 2023.06.13 |
---|---|
Set [ Javascript ] [ JavaScript 문법 종합반 2주차 ] (0) | 2023.06.13 |
ES6 문법 [ Javascript ] [ JavaScript 문법 종합반 2주차 ] (0) | 2023.06.13 |
1주차 연습문제 [ Javascript ] [ JavaScript 문법 종합반 1주차 ] (0) | 2023.06.12 |
while [ Javascript ] [ JavaScript 문법 종합반 1주차 ] (0) | 2023.06.12 |