[TIL] 230525

이세령·2023년 5월 25일
0

TIL

목록 보기
12/118

오늘 배운 것

콜백함수

함수를 인자로 넘겨주는 함수
ex) map, forEach(), setTimeout() 등

제어권

콜백함수의 제어권은 받는 함수가 가지고 있다!
우리가 제어할 수 없다.

this

콜백함수도 함수이기에 기본적으로 전역객체를 가리킨다.
but, 제어권을 넘겨받을 코드에서 콜백 함수에 별도로 this가 될 대상을 지정한 경우에는 그 대상을 참조한다!

prototype

    생성자.prototype.함수 = function() {}

보통 메서드를 정의할 때 사용한다.
map, apply, call을 이용해서 원하는 인자에서 콜백 함수 내부에 사용될 this를 명시적으로 바인딩 해준다.

콜백지옥

함수 -> 매개변수 -> ... 반복
보통 코드가 > 모양을 가지고 있다.
가독성이 안좋고 수정이 어려워서 유지보수하기 힘들기 때문에 콜백지옥에 빠지지 않도록 주의해야한다.

동기와 비동기

동기: 순차적으로 앞에 처리한 것이 끝날때까지 기다리고 하나씩 처리한다. sync
비동기: 병렬적으로 따로따로 처리한다. 순서와 상관없이 먼저 완료된 것을 처리한다. async
-> setTimeout, 통신이 주로 이를 사용한다.

  • 순서를 보장하지 않는 비동기
    언제 필요한 것이 처리될 지 모르기때문에 동기적으로 처리해주어야 한다.

  • 비동기의 단점 보완
    동기적인 것 처럼 보이게 해주는 3가지

  1. Promise
    성공하면 resolve
.then() 

구문을 실행한다.
실패하면 reject, 예외처리를 해준다.

.catch() 
  1. Generator
fucntion* () {}
변수 = yield 메서드();

yield를 만나면 멈췄다가 다음걸 처리한다.

  1. Async
    화살표 함수 X
async function() {}

화살표 함수 사용 시

async () =>

yield 처럼 await를 만나면 멈췄다가 처리한다!

어려웠던 내용

다양한 새로운 언어들로 인하여 이해가 어려웠다. 예제의 경우 출력을 실행해보면 얕게 이해할 수는 있었지만, 활용이나 어디서 사용해야할지는 프로젝트, 페이지 제작을 수행해보면서 익혀야 할 것 같다.

궁금한 내용 / 부족한 내용

얕게 이해했기 때문에 자세한 내용을 말로 표현하기가 힘들었고, this 바인딩이 어떤 부분에서 실행되고 실행되지 않는지, 암기가 필요한 것 같다.

느낀 점

3주차 강의보다 4주차 동기/비동기와 콜백함수의 이해는 잘 되었지만, this 바인딩이 어느 부분에서 필요하고 실행되는지와 3주차 강의 내용을 완벽하게 이해하려면 다양한 경험이 필요할 것 같다.

profile
https://github.com/Hediar?tab=repositories

0개의 댓글