자바스크립트의 실행 컨텍스트, 이벤트 루프, 프로토타입

홍석현·2023년 5월 31일
1

CS

목록 보기
3/6

자바스크립트는 동적이고 유연한 언어로, 실행 컨텍스트, 이벤트 루프, 프로토타입이라는 핵심 개념들을 가지고 있습니다. 자바스크립트의 실행 컨텍스트, 이벤트 루프, 그리고 프로토타입에 대해 찾아봤습니다.

1. 실행 컨텍스트 (Execution Context)

자바스크립트에서 실행 컨텍스트는 코드가 실행되는 환경을 의미합니다. 실행 컨텍스트는 변수, 함수 선언, 스코프 체인 등을 관리하며, 코드의 실행을 위한 필요한 정보를 담고 있습니다. 각 실행 컨텍스트는 전역 컨텍스트와 함수 컨텍스트로 나뉩니다.

전역 컨텍스트(Global Execution Context): 스크립트 실행 시 가장 먼저 생성되는 컨텍스트로, 전역 변수와 함수 선언을 포함합니다.

함수 컨텍스트(Function Execution Context): 함수가 호출될 때마다 생성되는 컨텍스트로, 함수 내부에서 사용되는 변수와 매개변수, 내부 함수 등을 관리합니다.

각 실행 컨텍스트는 변수와 함수 선언을 호이스팅하고, 실행 컨텍스트 스택에 쌓여 순서대로 실행됩니다.

2. 이벤트 루프 (Event Loop)

자바스크립트는 단일 스레드 기반의 언어로, 이벤트 루프를 통해 비동기적인 동작을 지원합니다. 이벤트 루프는 Call Stack, Callback Queue, Event Loop로 구성됩니다.

Call Stack: 실행 컨텍스트가 쌓이는 스택으로, 함수 실행과 관련된 정보를 저장합니다.

Callback Queue: 비동기적인 작업의 콜백 함수들이 대기하는 큐입니다.

Event Loop: Call Stack과 Callback Queue를 모니터링하며, Call Stack이 비어있을 때 Callback Queue의 작업을 순차적으로 가져와 실행합니다.

이벤트 루프는 비동기 작업(예: 타이머, 이벤트 핸들러, AJAX 요청)이 완료되면 해당 작업의 콜백 함수를 Callback Queue에 넣어주고, Call Stack이 비어있을 때 해당 콜백 함수를 실행하여 비동기 작업을 처리합니다.

3. 프로토타입 (Prototype)

자바스크립트는 프로토타입 기반의 객체 지향 언어로, 객체들 간에 프로토타입 체인을 통해 속성과 메서드를 상속합니다. 객체는 프로토타입이라는 내부 링크를 가지고 있으며, 해당 프로토타입 객체의 속성과 메서드를 사용할 수 있습니다.

프로토타입 체인은 객체의 속성 또는 메서드에 접근할 때, 해당 객체에 속성 또는 메서드가 없다면 상위 프로토타입으로 이동하여 검색하는 메커니즘입니다. 이를 통해 코드의 재사용성과 상속 개념을 구현할 수 있습니다.

프로토타입은 proto 속성이나 Object.getPrototypeOf() 메서드를 통해 접근할 수 있으며, ES6부터는 클래스와 extends 키워드를 이용한 클래스 기반의 상속도 지원합니다.

자바스크립트의 실행 컨텍스트, 이벤트 루프, 그리고 프로토타입은 자바스크립트의 핵심 개념이며, 비동기 처리와 객체 지향 프로그래밍을 가능하게 합니다. 이를 이해하고 활용하면 자바스크립트의 기능을 더욱 효과적으로 활용할 수 있습니다.

profile
Front-end to Full-stack

0개의 댓글