1 분 소요

오늘 배운 것

  1. 콜백 함수

함수를 변수처럼 준다고 해서 다른 곳에서 재귀 함수와 비슷한 감각으로 접근했다가 헷갈려 버렸다.
정확히는 함수 그 자체를 변수 하나에 할당시켜서 그 변수가 함수로 작동되게 하는 것이었다.
유니티에서 사용하는 delegate 쪽하고 비슷하다고 생각하면 될 듯 하다.
비동기 처리에서 동기처럼 순서를 지정하기 위해서 사용하나, 자칫하면 콜백 지옥에 빠질 수 있으니 주의해야 한다.

  • 콜백 지옥 : 콜백 함수가 반복되어 들어쓰기가 힘들어지는 경우
setTimeout(
  function (name) {
    var coffeeList = name;
    console.log(coffeeList);

    setTimeout(
      function (name) {
        coffeeList += ", " + name;
        console.log(coffeeList);

        setTimeout(
          function (name) {
            coffeeList += ", " + name;
            console.log(coffeeList);

            setTimeout(
              function (name) {
                coffeeList += ", " + name;
                console.log(coffeeList);
              },
              500,
              "카페라떼"
            );
          },
          500,
          "카페모카"
        );
      },
      500,
      "아메리카노"
    );
  },
  500,
  "에스프레소"
);
  1. this의 개념

현재 실행되고 있는 곳의 환경이라고 생각하면 될 듯 하다.
레시컬 스코프니 하는 단어는 복잡하지만 이해하자면 현재 this를 선언하면 어디서 변수 값을 가지고 올 수 있는가라 생각하면 좀 편하다.
this가 결정되는 요인은 선언했을 당시의 환경을 기억한다고 보면 되겠다.
오류는 있겠지만 나는 이렇게 먼저 이해하고 시행착오를 겪어볼 생각이다.

  1. 비동기 처리 위의 두 가지를 배워야만 하는 이유는 결국 js가 싱글스레드라는 점 때문이다.
    동기적으로 처리하면 시간이 너무 오래 걸리기 때문에 멀티스레드처럼 여러 개를 분산하여 작업하는 게 필요하기 때문이다.
    해당 문제를 위해 promise, async, await를 사용해야 한다.

  2. 그 외

클래스나 그런 부분은 차차 배워가면 될 테니 문제는 없어 보인다.

내일 할 것

내일부턴 과제 프레임워크를 작성하자.

태그:

카테고리:

업데이트: