2024-11-05 TIL
오늘 배운 것
- 콜백 함수
함수를 변수처럼 준다고 해서 다른 곳에서 재귀 함수와 비슷한 감각으로 접근했다가 헷갈려 버렸다.
정확히는 함수 그 자체를 변수 하나에 할당시켜서 그 변수가 함수로 작동되게 하는 것이었다.
유니티에서 사용하는 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,
"에스프레소"
);
- this의 개념
현재 실행되고 있는 곳의 환경이라고 생각하면 될 듯 하다.
레시컬 스코프니 하는 단어는 복잡하지만 이해하자면 현재 this를 선언하면 어디서 변수 값을 가지고 올 수 있는가라 생각하면 좀 편하다.
this가 결정되는 요인은 선언했을 당시의 환경을 기억한다고 보면 되겠다.
오류는 있겠지만 나는 이렇게 먼저 이해하고 시행착오를 겪어볼 생각이다.
-
비동기 처리 위의 두 가지를 배워야만 하는 이유는 결국 js가 싱글스레드라는 점 때문이다.
동기적으로 처리하면 시간이 너무 오래 걸리기 때문에 멀티스레드처럼 여러 개를 분산하여 작업하는 게 필요하기 때문이다.
해당 문제를 위해 promise, async, await를 사용해야 한다. -
그 외
클래스나 그런 부분은 차차 배워가면 될 테니 문제는 없어 보인다.
내일 할 것
내일부턴 과제 프레임워크를 작성하자.