자바스크립트 JavaScript
15. JavaScript의 실행 컨텍스트와 호이스팅
안녕하세요! 태마입니다.
JavaScript 기초 강좌입니다.
강좌의 경우
1. 주제 간단 정리
2. 상세 주제 정리
으로 이루어져 있습니다.
자바스크립트 JavaScript
포스팅 시작하겠습니다 :)
1. 주제 간단 정리
1. 실행 컨텍스트(Execution Context)란?
실행 컨텍스트는 **JavaScript 코드가 실행될 때 생성되는 환경(Execution Environment)**을 의미합니다.
즉, 변수와 함수가 실행되는 동안 어떤 방식으로 저장되고 관리되는지를 결정하는 개념입니다.
📌 실행 컨텍스트를 이해하면 JavaScript 코드의 실행 흐름을 명확히 파악할 수 있음!
2. 실행 컨텍스트의 생성 과정
JavaScript 코드가 실행될 때, 실행 컨텍스트는 3단계로 구성됩니다.
- 생성(Create) – 실행 전에 변수와 함수 선언을 저장
- 초기화(Initialize) – 변수에 undefined 할당 및 this 설정
- 실행(Execute) – 코드 실행 및 값 변경
✅ 실행 컨텍스트 생성 과정 예제
console.log(a); // undefined (호이스팅 발생)
var a = 10;
console.log(a); // 10
📌 변수 a는 실행 전에 undefined로 초기화되고, 이후에 값이 할당됨!
3. 실행 컨텍스트의 구성 요소
실행 컨텍스트는 3가지 주요 요소로 이루어집니다.
요소설명
변수 환경 (Variable Environment) | var 선언 변수 저장, this 값 관리 |
렉시컬 환경 (Lexical Environment) | let, const 선언 변수 관리 |
this 바인딩 (This Binding) | this가 어떤 객체를 가리키는지 저장 |
✅ 실행 컨텍스트 구조 예제
function test() {
var x = 10;
let y = 20;
console.log(x + y);
}
test();
📌 변수 환경에는 x, 렉시컬 환경에는 y가 저장됨!
✅ 여기까지 실행 컨텍스트의 개념과 생성 과정을 배웠습니다!
👉 "그렇다면, 실행 컨텍스트와 밀접한 관계가 있는 '호이스팅(Hoisting)'이란 무엇일까?"
✅ 2부에서 호이스팅의 원리와 var, let, const의 차이를 상세히 배워봅시다!
2. 상세 주제 정리
1. 호이스팅(Hoisting)이란?
호이스팅(Hoisting)이란 변수와 함수 선언이 코드 실행 전에 메모리 상단으로 끌어올려지는 현상입니다.
✅ 호이스팅 예제
console.log(name); // undefined
var name = "Alice";
console.log(name); // "Alice"
📌 변수 name이 실행 전에 메모리에 등록되었지만, 초기 값이 undefined로 설정됨!
2. var, let, const의 호이스팅 차이
✅ 1) var의 호이스팅 특징
console.log(a); // undefined
var a = 10;
console.log(a); // 10
📌 var 변수는 호이스팅되지만, undefined로 초기화됨!
✅ 2) let과 const의 호이스팅 특징
console.log(b); // ReferenceError: Cannot access 'b' before initialization
let b = 20;
📌 let과 const도 호이스팅되지만, TDZ(Temporal Dead Zone)로 인해 오류가 발생함!
3. 함수 선언과 표현식의 호이스팅 차이
✅ 1) 함수 선언식(Function Declaration)
hello(); // "안녕하세요!"
function hello() {
console.log("안녕하세요!");
}
📌 함수 선언식은 호이스팅되며, 호출 전에 사용할 수 있음!
✅ 2) 함수 표현식(Function Expression)
greet(); // TypeError: greet is not a function
const greet = function() {
console.log("반갑습니다!");
};
📌 함수 표현식은 변수에 할당되기 전에 호출할 수 없음!
✅ 지금까지 실행 컨텍스트와 호이스팅을 상세히 배웠습니다!
👉 "그렇다면, JavaScript의 클래스(Class)와 생성자 함수는 어떻게 동작할까?"
✅ 다음 회차에서 클래스와 생성자 함수의 차이를 배워봅시다! 🚀
'IT Developer > JavaScript' 카테고리의 다른 글
JavaScript 기초 <19. 로컬스토리지 vs 세션스토리지 vs 쿠키 (차이점과 활용법)> (0) | 2025.03.21 |
---|---|
JavaScript 기초 <18. JSON과 JavaScript (서버 통신과 활용법)> (0) | 2025.03.20 |
JavaScript 기초 <17. 모듈(Module) 시스템 (import/export, CommonJS, ESM)> (1) | 2025.03.19 |
JavaScript 기초 <16. 클래스(Class)와 생성자 함수(ES6 이후 차이점 포함)> (0) | 2025.03.18 |
JavaScript 기초 <14. 이벤트(Event) 시스템과 버블링/캡처링 개념 정리> (1) | 2025.03.16 |
JavaScript 기초 <13. DOM(Document Object Model)이란? (HTML과 JS 연결하기)> (1) | 2025.03.15 |
JavaScript 기초 <12. 배열(Array)와 고차 함수(map, filter, reduce 등) 활용> (1) | 2025.03.14 |
JavaScript 기초 <11. JavaScript의 객체(Object)와 프로토타입 개념> (1) | 2025.03.13 |