JavaScript
콜백 함수 이해하기 1일차
한우종
2024. 8. 19. 21:37
콜백함수
- 콜백함수 란?
다른 코드에 인자,매개변수를 함수를 넘겨주는 경우를 콜백함수 라고한다.
콜백함수는 다른 코드에게 인자로 넘겨줌으로써 그 제어권 도 함께 위임한 함수이다.
- 제어권 이란
콜백함수를 언제, 어떻게, 몇 번 호출할지 결정하는 권한을 의미한다.
콜백함수를 다른함수에 전달할시 그 함수가 콜백함수를 호출하는 시점 과 방법 을 결정할 수 있다.
- 이해못함
솔직히 일단 찾아본걸 옮겨적은 느낌이라 크게 와닿지않는다.
누가 콜백함수가 뭐야? 하고 물어보면 대답할 자신이 생기지않음남이 써놓은 글을 읽고 따라적어봐야 타이핑연습하는 느낌이고 결국 기억이 안난다.
나중에 다시 뜯어 고치더라도 일단 내가 이해할 수 있는 형태로 비유해가며 작성해보도록하자.
- 1. 제어권 이해해보자 어떻게든
제어권은 1회용 아이템이다.
아이템(함수)을 사용하기위해선 아이템칸(다른코드)으로 보내줘야하는데
스스로 제어권을 가진 물폭탄이라는 아이템(함수:사용시 물폭탄이 터지는 로직을 가지고있음)
을 아이템칸으로 보내주면
물폭탄을 아이템칸(다른코드:아이템을 사용하는 코드) 으로 보내줌으로써
물폭탄의 제어권이 아이템칸으로 넘어가게됨
이 아이템칸이 물폭탄을 사용할시 아이템칸에서 빠져나가고
다시 제어권이 물폭탄에게 돌아온다. - 요약
1.아이템(함수)를 아이템칸(다른 코드) 에 제어권가 함꼐 보내줌
2.아이템칸에서 아이템사용:이 사용할 타이밍 언제 어떻게를 결정할수 있는 권한이 제어권
3.사용후 다시 아이템은 아이템칸에서 빠져나가며 아이템칸은 아이템에대한 제어권을 다시 아이템에게 돌려줌
(물폭탄에 대한 제어권이 나한테 넘어오면 쓸지말지를 정할수있고 내가 사용한후 다시 반납할 수 있음)
// 물폭탄(아이템) 함수 정의
function waterBomb() {
console.log("펑!"); //물폭탄 효과음
}
// 아이템칸(다른 코드) 함수 정의
function itemBox(item) {
console.log("아이템 사용함");
item(); //아이템사용시 로직이 들어올 자리
console.log("아이템 다씀");
}
// 물폭탄을 아이템칸으로 보내기
//itemBox에 (매개변수) 자리에 waterBomb을 넣어줌으로써 item() === waterBomb 의 로직을 수행함
itemBox(waterBomb);
//waterBomb의 제어권이 itemBox로 넘어가고 사용후 다시 waterBomb에게 제어권을 돌려줌