이벤트 기반(Event-driven)
- 이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식
- Click, Network Call이 존재
- 특정 이벤트가 발생할 때 무엇을 할 지 미리 등록하는 것을 Evnet Listener에 Callback 함수를 등록한다고 표현함
이벤트 기반 동작 순서 ☆☆☆
1. Event Listener에 Callback 함수 등록
2. 사용자가 Event 실행
3. Event Listener에 등록된 Callback 함수를 호출
Javascript 호출 스택 실행 순서 ☆☆☆
Event Loop (이벤트 루프)
- 이벤트 발생 시 호출할 콜백 함수들을 관리하고, 호출된 콜백 함수의 실행 순서를 결정하는 역할
- Node가 종료될 때까지 이벤트 처리를 위한 작업을 반복하므로 Loop라고 부름
Background (백그라운드)
- setTimeout 같은 타이머나 Event Listener들이 대기하는 곳
- Javascript가 아닌 다른 언어로 작성된 프로그램이 포함됨
- 여러 작업이 동시에 실행될 수 있다.
Task Queue (테스크 큐)
- 이벤트 발생 후, 백그라운드에서는 Task Queue로 타이머나 Event Listener의 Callback 함수를 보낸다.
- 정해진 순서대로 Callback들이 줄을 서 있으므로 Callback Queue라고도 부름
- Callback 들은 보통 완료된 순서대로 줄을 서 있지만, 특정한 경우에는 순서가 바뀌기도 한다.
1. 호출 스택에 실행한 코드가 쌓인다.
2. setTimeout과 같은 Callback 함수 실행시 백그라운드로 보냄
3. 백그라운드에서 지정한 시간이 지난 후 Task Queue로 보낸다.
4. 시간이 지난 후 호출 스택의 모든 실행이 끝나 비워지게 되면
5. Event Loop가 Task Queue의 Callback을 호출 스택으로 올린다.
6. setTimeout의 지정한 코드가 호출 스택에서 실행되고 비워짐
7. Event Loop는 Task Queue에 Callback이 들어올 때까지 대기한다.
== Chapter 1 변수 할당으로 의도를 표현하라
= Tip 3 블록 유효 범위 변수로 정보를 격리하라
호이스팅
- Javascript에서 실행 콘텍스트가 어떻게 동작하는가에 대한 일반적인 생각
- 변수 및 함수 선언은 컴파일 단계에서 메모리에 저장된다.
- Javascript는 초기화가 아닌 선언만 끌어 올린다.
- 만약 변수를 선언한 뒤 나중에 초기화시켜 사용한다면, 그 값은 undefined로 지정된다.
var : 함수 내에서 마지막으로 할당한 값을 참조한다.
Closer (클로저)
- 다른 함수가 사용할 수 있도록 함수 내부에서 변수를 생성하는 것
== Chapter 2 배열로 데이터 컬렉션을 관리하라
= Tip 5 배열로 유연한 컬렉션을 생성하라
'필기노트' 카테고리의 다른 글
[Python 코딩의 기술] Chapter 2 리스트와 딕셔너리 (0) | 2021.10.16 |
---|---|
[Python 코딩의 기술] Chapter 1 파이썬 답게 생각하기 (0) | 2021.10.12 |
[Javascript 코딩의 기술] Chapter 4 조건문을 깔끔하게 작성하라 (0) | 2021.10.04 |
[Javascript 코딩의 기술] Chapter 3 특수한 컬렉션을 이용해 코드 명료성을 극대화하라 (0) | 2021.10.04 |
[필기노트] 검색 알고리즘, 재귀 알고리즘 (0) | 2021.09.22 |