스파르타 (React_6기) 본캠프

2024. 07. 25.(JavaScrip 기본 문법 정리 - 일급 객체로서의 함수)

cha123hein 2024. 7. 25. 19:35

일급객체(First-class Object) : 자바스크립트의 함수를 일컫는 말로, 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체이다.

 

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

위의 말은 함수가 마치 값으로 취급되며, 함수를 나중에 사용될 수 있도록 조치가 할 수 있다.

ex) const sayHello = fuction() {
console.log("Hello!");
};

-> sayHello를 입력하면 "Hello!"라는 값이 나오도록 조치되었다.

 

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

function callFuction(func){
func(); 
}
callFunction(sayHello):

-> 위의 함수를 매개변수에 넣을 수 있다.

 

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

2-2. 고차함수 : 함수를 인자로 받거나 return하는 함수.

 

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

function createAdder(num){
return function(x) {
return x + num;
};
const addFive = createAdder(5);
console.log(addFive(10));

-> 5+10이므로 결과값이 15가 나온다.

 

4. value값으로 함수가 들어갈 수 있다.

const person = {
name : 'john',
age : 31,
isMarride : true,
sayHello : fuction(){
console.log('hello. my name is' + this. name);
}
}

-> this는 항상 자기 자신을 가르킨다. 위의 경우 this는 person을 가리킨다.

즉 this.name : john을 나타낸다.

 

sayHello : fuction(){

console.log('hello. my name is' + this. name);

-> 이 부분을 백틱으로 변환하면

sayHello : fuction(){
console.log(`hello my name is ${this.name}`);

로 변환할 수 있다.

 

* 화살표함수로 변환하면, 

sayHello : () =>{
console.log(`hello my name is ${this.name}`);

로 변환할 수 있는데, 위를 출력하였을 때 this. name 값이 undefined로 나온다.

위 사항은 this 바인딩부분에서 공부할 예정이다.

 

5. 배열의 요소로 함수를 할당한다.

const myArr = {
funcion (a, b) {
return a + b;
}, 
fuction (a, b) {
return a - b;
}
};

-> 위의 결과값을 출력하려면 console. log(myArr[배열순서값](입력값,입력값));으로 해야하는데,

배열은 0부터 시작하므로 더하기함수의 배열순서는 0, 빼기함수의 배열순서는 1이다.