나만의 작은 도서관

[TIL] 240429 캠프 15일차 : 다 타버린 재와 같은 마음 본문

Today I Learn

[TIL] 240429 캠프 15일차 : 다 타버린 재와 같은 마음

pledge24 2024. 4. 29. 22:46

오늘 배운 내용

  • 콜백 함수, promise, async/await.... 이런 기능들이 자바스크립트에 있는 이유는 바로 비동기 실행 코드 때문이다. 대표적으로 fetch()함수는 promise객체를 반환하는데, 반환하기 전까지 다른 코드를 실행하지 않는 것이 아니라 요청만하고 다음 줄 코드가 실행된다. 이런 이유 때문에 fetch()함수가 끝났을 때 실행되야 하는 의존성을 가진 코드가 먼저 실행되는 문제가 발생하게 되는데 이런 문제를 해결하기 위해 콜백 함수, promise, async/await가 존재한다.(사실 콜백함수는 조금 얘기가 다르다.)
  • 클로져라는 개념이 자바스크립트에 존재한다. 갈비지 컬렉터와도 연관되어있는 클로져는 내부 함수의 수명이 외부 함수보다 길 때, 외부 함수가 수명이 다해도 해당 변수에 접근할 수 있는 개념이다. 이는 자바스크립트가 함수가 호출되었을 때가 아닌 선언되었을 때를 기준으로 변수에 접근하기 때문이다. 
  • 사실 자바스크립트의 모든 변수 타입(var, let, const)은 호이스팅 된다. 즉, 자바스크립트에 있는 모든 변수를 알고 시작한다는 것이다. 단 var과 let의 차이는 defined로 값이 출현 유무이다. var는 선언됨과 동시에 defined로 초기화 되고, let은 그렇지 않는다. 대신 TDZ(Temporal Dead Zone)이라는 영역에 존재하게 되는데, 해당 영역은 초기화 되지 않은 변수들의 영역이다. 그렇기 때문에 만약 변수의 값이 defined가 나오는 것을 원할 때, defined로 초기화되는 var변수의 사용은 그 값이 어떤 경로에서 나온 defined인지 알 수 가 없기 때문에 사용을 하지 않는 것이 아닌가 하는 생각이 든다.

오늘 한 일

  • 오늘은 개인 과제를 내는 날. 마무리 작업으로 몇 가지 잔기능을 추가했다. 스크롤해도 상단바가 상단에 고정되어 따라오는 기능, 홈버튼 추가, 화살표 함수와 find함수 사용 등을 작업해 깃허브에 커밋하였다. find함수를 어거지로 넣어야해서 1시간도 안남았을 때 진땀을 뺐다.
  • 잘 모르겠거나 헷갈리는 개념들을 열심히 검색해서 알아보았다. 알아본 내용은 위에 "오늘 배운 내용"을 중심으로 알아보았다.
  • 자바스크립트 종합반 강의를 1강부터 5강까지 한 번 더 회독했다. 이번으로 3회독 째다. 이제는 어느정도 말로 설명할 수 있는 지경에 이루었기 때문에 다음 회독 때 얼마나 이해도가 높아질 지 기대된다. 역시 얇게 여러번 공부법은 효과가 좋다.

오늘 하루는?

  • 체력이 후달린다... 주말에 쉬었어야 했는데 이놈의 개인과제가 나를 놓아주질 않는다. 계속 머리 속에서 '조금만 더하면 될 것 같은데...'같은 생각이 떠나질 않아 주말임에도 불구하고 계속 만들고 있었으니 쉬지못한 못이 성할리 없다. 컨디션 조절해야하는데 이러다 쓰러지는 게 아닌가 싶다.