2024.01.12 TIL - 일급 객체로서의 함수

김민석·2024년 1월 12일
0

TIL

목록 보기
13/78

first class object
다른 객체들이랑 똑같이 적용할 수 있음 (매개변수로 전달 가능, return문으로 출력)

변수에 함수를 할당

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

우측 부분이 함수, 좌측 부분이 변수의 선언부
함수를 어디서나 호출할 수 있다.
sayHello라는 이름을 가지고 함수를 어디서나 호출 할 수 있다
호출할 수 있을 뿐만 아니라 함수를 마치 객체럼 변수처럼 넣을 수도 있고
매개변수처럼 보낼 수도 있음
함수가 마치 값으로, 나중에 사용될 수 있도록

함수를 인자로 다른 함수에 전달할 수가 있다.
콜백함수 : 매개변수로써 쓰이는 함수 (고차함수의 한 종류)
고차함수 : 함수를 인자로 받거나 return 하는 함수

함수를 반환할 수 있다.

function createAdder (num) {
    return function (x) {
        return x +num;
    };
}

const addFive = createAdder(5);
console.log(addFive(10));

이건 즉

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

이렇게 되는 거임

예시) 스트링, 넘버, 불리언, 함수까지 넣어보기

 const person = {
    name: 'John',
    age: 31,
    isMarried: true,
    sayHello: function () {
        console.log('Hello, my name is ' + this.name)
    }
 }

 person.sayHello(); //Hello, my name is John

예시) 백틱 사용하기

 const person = {
    name: 'John',
    age: 31,
    isMarried: true,
    sayHello: function () {
        console.log(`Hello, my name is ${this.name}`);
    }
 }

 person.sayHello(); //Hello, my name is John

예시) 화살표 함수 사용하기

 const person = {
    name: 'John',
    age: 31,
    isMarried: true,
    sayHello: () => {
        console.log(`Hello, my name is ${this.name}`);
    }
 }

 person.sayHello(); //Hello, my name is undefined

화살표 함수는 undefined로 뜬다
화살푬 함수는 this를 바인딩 하지 않는다.

배열에도 함수 사용 가능

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

하 큰일이다 이해가 하나도 안된다..

profile
화이팅 화이팅

0개의 댓글