JS 문법 - 이벤트 루프
Class: 제로베이스
Created: December 28, 2022 9:41 AM
Type: Javascript
강의 명: 초심자도 빈틈없이 학습하는 자바스크립트
이벤트 루프란?
자바스크립트는 싱글 스레드 기반의 언어라서, 한번에 한 개의 작업을 진행.
하지만 자바스크립트가 사용되는 환경을 생각해보면 여러가지가 동시에 진행된다는 것을 알 수 있다.
싱글스레드 기반 언어이지만, 동시적으로 처리되는 작업은 이벤트 루프를 통해 구현되는 것.
동작 방식
![](https://velog.velcdn.com/images/kodskm/post/7d685e17-7588-4447-b87e-eaa97224318a/image.png)
- Javascript Engine
- heap과 call stack 으로 구성
- Heap
- 메모리 할당이 일어나는 공간
- 변수, 함수 선언 시 메모리 할당이 일어난다.
- Call Stack
- 코드 실행 시 쌓인다.
- LIFO (Last In First Out)
- WevAPI
- 자바스크립트가 아닌 브라우저에서 제공하는 API
- DOM, Ajax, 타이머 함수 등
- Callback 함수를 Callback Queue에 넣음
- Callback Queue
- 비동기적으로 실행된 콜백함수가 있다.
- ex) Ajax나 타이머 함수 실행 완료 후 실행할 콜백 함수가 보관된 곳이 콜백 큐
- FIFO (First In First Out)
- Event Loof
- 이벤트 루프
- 틱 동작을 한다.
실행 컨텍스트
실행 컨텍스트 생성 방법
- 전역 공간
- eval ( )
- 함수
- 블록문(block)
let str = '전역 컨텍스트'
function Outer() {
function Inner() {
let str = '내부 변수'
console.log(str)
}
inner();
console.log(str);
}
Outer();
console.log(str)
실행 컨텍스트 구성
- Variable Enviroment
- 변수 환경
- Lexical Enviroment와 동일한 값
- 현재 컨텍스트 내의 식별자 정보 + 외부 정보
- 변경 사항이 반영되지 않는다.
- Lexical Enviroment
- 어휘적 환경
- 현재 컨텍스트 내의 식별자 정보 + 외부정보
- 컨텍스트 내부를 전체적, 순서대로 수집한다.
- 변경사항이 반영된다.
- 식별자 정보
- 현재 컨텍스트와 관련된 정보를 저장
- 매개변수, 함수, 변수
- 호이스팅
- 외부 정보
- 함수 선언 당시의 언어적 환경을 참조
- This Binding
- this는 실행 컨텍스트 생성 시 결정된다.
- 함수 호출시 객체를 참조한다.