[TIL] 콜백함수와 클로저함수

김민성·2021년 2월 9일
0

2021년 2월 9일, 자바스크립트 공부를 하면서 비동기 호출과 콜백함수를 배웠다.

비동기랑 동기의 차이점을 예시로 들면 일반적으로 카페에서 주문을 받을 때 처음 손님의 주문을 받고 다음 손님의 주문을 받고 음료가 나오면 손님에게 준다. 이 순서가 비동기 호출이다. 하지만 처음 손님이 주문을 하면 처음손님의 음료가 나오기 전까지 다음손님은 주문을 하지 못하고 음료가 나오고 나서야 주문을 받으면 이게 바로 동기 호출이다라고 생각했다.

여튼 이걸 공부하다가 문득 클로저 함수랑 콜백 함수의 차이점이 무엇인가에 대해서 너무 헷갈렸다.
그래서 기억날 때 적을거다.

a = function(){
  ...
  return function(1번함수){
    ...
  }
}
b = function(){
  ...
  let as = function(2번함수){
    ...
  }
}

처음에는 이런식으로 내부함수가 리턴을 받는지 선언되는지에 따라 나뉘는 줄 알았다. 하지만

function init(){
  let v = '무야~호';
  function name(){
    alert(v);
  }
  name();
}
init();

이렇게 외부에서 선언된 변수가 내부에서 사용될 때, 내부함수 부분이 클로저함수가 된다고 한다.
클로저함수의 정의를 보면 '함수와 함수가 선언된 어휘적 환경의 조합'으로 변수과 함수의 조합이란 뜻으로 해석하면 되는거 같다...

그리고 콜백함수는 특정 함수의 인자 부분을 함수로 받을 때 인자로 받는 함수를 말한다.
일반적으로는 함수의 인자는 변수나 배열, 객체를 주는데 자바스크립트만 인자부분을 함수로 줄 수 있다고 한다. 이를 이용해서 객체지향 프로그래밍도 가능해지는 것이라고한다.

오늘 정리한 내용은 이렇게 인데 정확한지는 확신이 없다. 누구 보여주고 검사 받고 싶다.

profile
https://github.com/alstjd8826

0개의 댓글