개발자 박가나
[241014 TIL] 본캠프 9일차 본문
Today 1. [JavaScript 문법 종합반] 강의
- 콜백 함수
- 다른 코드의 인자로 넘겨주는 함수
- 콜백 함수를 인자로 넘겨받는 함수가 실행에 대한 제어권을 가짐
- 제어권
- 콜백 함수 호출 시점에 대한 제어권
- 인자(의 순서)에 대한 제어권
- this가 가리킬 대상을 지정할 수 있음
- 콜백 지옥
- 콜백 함수를 반복적으로 사용함으로써 들여쓰기가 깊어져서 가독성이 떨어지는 현상
- 동기 : 현재 실행 중인 코드가 끝난 후 다음 코드를 실행
- 비동기 : 현재 실행 중인 코드의 완료 여부와 무관하게 즉시 다음 코드를 실행
- 비동기 제어 - Promise
- new 연산자로 호출
- 비동기 작업이 완료된 후 resolve 또는 reject 함수 호출
- 비동기 제어 - Generator
- *가 붙은 함수로, 실행 시 Iterator 객체 반환
- 비동기 작업이 완료되는 시점마다 next 메서드 호출
- async/await
- 비동기 작업을 수행할 함수 앞에 async 삽입
- 함수 내부에서 실질적인 비동기 작업이 필요한 위치에 await 삽입
실무에 있을 때 정말 많이 사용했던 문법이 바로 Promise와 async/await이었는데, 정작 효율을 위해서 비동기식으로 코드를 처리하는데 왜 굳이 비동기식 코드를 다시 동기식으로 처리를 하지?라는 의문을 한 번도 가져본 적이 없었던 것 같다. 오늘 강의를 통해서 비로소 동기식 처리가 필요한 이유는 무엇인지, 이를 처리하기 위한 방법에는 무엇이 있는지에 대해서 명확히 알 수 있게 되었다.
Today 2. 개인 공부 - 블로그 포스팅
- 콜백 함수와 비동기 제어 현재는 Notion에 취합하여 아래 포스팅이 존재하지 않음
[JavaScript] 콜백 함수 & 비동기 제어
📌 이번 포스팅에서 배울 내용 ▶ 콜백 함수 ▶ 제어권 ▷ 호출 시점 / 인자 / this ▶ 콜백 지옥 ▶ 비동기 제어 ▷ Promise ▷ Generator
dev-gana.tistory.com
오늘 강의에서 콜백 함수와 비동기 제어 관련 내용을 배웠는데 실무에서 너무나도 자주 접하는 개념이기도 하고 마냥 쉬운 내용도 아니었기 때문에 블로그 포스팅을 하면서 복습을 하면 나중을 위해서라도 좋을 것 같다는 생각이 들었다. 강의를 들을 때는 이해를 했다고 생각한 내용도 포스팅으로 정리를 하려고 하니 생각보다 어려웠지만 내가 이해할 수 있는 문장들로 정리를 하면서 복습을 하니까 이해도가 훨씬 높아지는 기분이었다. 이전에 배웠던 개념들도 시간적으로 여유가 될 때 틈틈이 포스팅을 해놓아야 겠다는 생각이 들었다.
Today 3. [달리기반] 이론 수업 1회차
- 변수 (Variable)
- var / let / const
- 데이터 타입 (Data Type)
- 기본 타입 / 참조 타입
- 연산자 (Operator)
- 산술 연산자 / 할당 연산자 / 비교 연산자 / 논리 연산자
- 함수 (Function)
- 함수 선언식 / 함수 표현식 / 화살표 함수 / 즉시 실행 함수
- 조건문 (Condition Statement)
- if문 / if - else문 / if - else if - else문 / switch문 / 삼항 연산자
- 반복문 (Loop)
- for문
오늘 이론 수업에서는 [JavaScript 문법 종합반] 강의 1주차에서 배웠던 내용에 대해서 다시 한 번 정리하는 시간을 가지게 되었다. 이미 강의를 통해서 배웠던 내용이기도 하고 비교적 쉬운 내용이었기 때문에 이해하는데 큰 무리가 없었지만 단순히 느낌적으로 알고 있는 것과 누군가에게 설명할 수 있는 것은 큰 차이가 있다는 튜터님의 말씀을 듣고 순간적으로 멈칫하게 되었다. 솔직히 쉬운 내용이어서 강의만 듣고 제대로 복습하지 않고 넘어왔는데 블로그 포스팅을 통해 내용을 다시 한 번 정리하는 시간을 가져야겠다는 생각이 들었다.
Today 4. [알고리즘] 특강 3회차
- [문제풀이] 없는 숫자 더하기
- 방법 1 : 없는 숫자가 무엇인지 찾기
- 방법 2 : 없는 숫자의 합 구하기 (45 - numbers에 들어있는 숫자의 합)
- [문제풀이] 핸드폰 번호 가리기
- 방법 1 : 반복문 사용
- 방법 2 : 메서드 사용
- 기타 : padStart()
- [문제풀이] 나누어 떨어지는 숫자 배열
- 배열의 요소를 모두 탐색하여 나누어 떨어지는지 확인 (완전탐색)
- 요소의 index 값이 필요없을 경우 for문 대신 for-of문을 사용하는 것이 바람직
- [문제풀이] 최소 직사각형
- 시간 복잡도
- 코드의 효율성은 Big-O 표기법 기반의 시간 복잡도로 나타낼 수 있음
- 가능한 시간 복잡도가 낮은 알고리즘을 사용하는 것이 좋음
- Lv.2 이상의 문제의 경우, 시간 복잡도가 낮은 방법으로 풀어야만 점수를 주는 항목도 존재
- 공간 복잡도
- 프로그램의 실행에 얼마나 많은 메모리가 필요한지 나타내는 척도
- 가능한 적은 메모리를 사용해서 문제를 푸는 것이 좋음
알고리즘 문제를 풀다보면 낑낑대면서 코드를 작성했는데 정작 내용을 지원하는 메소드가 있어서 한 줄로 코드를 줄일 수 있는 경우가 종종 있다. 당장 오늘 특강에서도 padStart()라는 메소드를 알게 되었다. 앞으로 매일 일정 시간을 알고리즘 문제를 푸는 것에 투자하게 될텐데 그 시간 중에서 10분 정도는 JavaScript 메서드를 찾아보고 사용해보는 것에 할애를 하는 것도 많은 도움이 될 것 같다는 생각이 들었다.
'내일배움캠프' 카테고리의 다른 글
[241016 TIL] 본캠프 11일차 ('영화 사이트 만들기' 프로젝트 2일차) (2) | 2024.10.16 |
---|---|
[241015 TIL] 본캠프 10일차 ('영화 사이트 만들기' 프로젝트 1일차) (1) | 2024.10.15 |
[241011 TIL] 본캠프 8일차 (0) | 2024.10.11 |
[241010 TIL] 본캠프 7일차 (1) | 2024.10.10 |
[241008 TIL] 본캠프 6일차 (1) | 2024.10.08 |