Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 자바스크립트 클래스
- javascript opreators
- html 주석
- css3
- 자바스크립트
- css display
- HTML
- html 코드
- 자바스크립트 반복문
- 자바스크립트 scope
- 자바스크립트 생성자 함수
- 오블완
- 자바스크립트 실행 컨텍스트
- CSS
- javascript
- javascript opreator
- 티스토리챌린지
- 자바스크립트 연산자
- 자바스크립트 상속
- css position
- 프론트엔드
- 자바스크립트 스코프
- 자바스크립트 dom의 목적
- 웹 개발 트렌드
- 자바스크립트 innertext
- 자바스크립트 innerhtml
- 자바스크립트 onclick
- css 포지션
- 자바스크립트 dom 문법
- front-end
Archives
- Today
- Total
Multi Developer SuHo
[자바스크립트] 실행 컨텍스트 (Excution Context) 🗒 본문
SMALL
안녕하세요~ 이번에는 자바스크립트에서 실행 컨텍스트 (Excution Context) 에 대해 알아보겠습니다. 실행 컨텍스트가 무엇인지, 실행 컨텍스트에 대한 예시 코드를 작성해보면서 이해하는 시간을 가지게 되겠습니다.
더보기
목차 📒
1. 실행 컨텍스트
1-1. 실행 컨텍스트란?
1-2. 실행 컨텍스트 구조
1-3. 실행 컨텍스트 예시 코드
서론 🗒
앞서 설명하기전 "실행 컨텍스트" 키워드에 접근해 봅시다. "실행" 말 그대로 실행하는 것으로 해석이 되고, "컨텍스트"는 번역하면 "맥락"이라고 나옵니다. 그럼 이 키워드를 조합하면 "실행하는 맥락" 이라고 해석이 되겠습니다. 그럼 본격적으로 실행 컨텍스트(Exction Context)을 살펴보시죠
본론 🗒
1. 실행 컨텍스트 (Exction Context)
1-1. 실행 컨텍스트란?
자바스크립트에서 실행 컨텍스트는 식별자를 좀 더 효율적으로 관리해서 퍼포먼스를 끌어 올렸다고 보면 된다.
1-2. 실행 컨텍스트 구조🌍
이렇게 실행 컨텍스트는 코드 실행이 시작되면 가장 먼저 전역 실행 컨텍스트가 생성되고, 호출 스택에 쌓입니다. 그 이후 함수가 호출될 때 마다 실행 컨텍스트를 생성합니다.
실행 컨텍스트 순서
- 전역 실행 컨텍스트 생성 : 코드 실행이 시작될 때 가장 먼저 생성됩니다.
- 함수 호출 시 실행 컨텍스트 생성 : 함수가 호출될 때마다 새로운 실행 컨텍스트가 생성되고, 호출 스택에 쌓입니다.
- 실행 컨텍스트 실행 : 호출 스택의 가장 위에 있는 실행 컨텍스트의 코드가 실행됩니다.
- 실행 컨텍스트 제거 :함수 호출이 완료되면 해당 함수의 실행 컨텍스트는 콜 스택에서 제거된다
1-3. 실행 컨텍스트 예시 코드
각각 코드 한줄마다 주석으로 설명하였습니다.
// 첫 번째 에시코드
function foo() {
// foo 함수의 실행 컨텍스트 생성
let a = 1; // a 변수에 1 할당
function foo2() {
// foo2 함수의 실행 컨텍스트 생성 (foo 함수의 실행 컨텍스트 내부에 생성)
console.log(b); // b 변수를 찾으나 foo2의 스코프에 없으므로 ReferenceError 발생
console.log(foo3()); // foo3 함수 호출
}
foo2(); // foo2 함수 호출
let b = 2; // b 변수에 2 할당 (foo 함수의 변수 객체에 저장)
// foo2 함수 호출 시점에는 b가 undefined 상태였으므로 ReferenceError 발생
}
function foo3() {
// foo3 함수의 실행 컨텍스트 생성
return 4;
}
foo(); // foo 함수 호출, foo 함수의 실행 컨텍스트 생성
// 두 번째 예시코드
function boo() {
// boo 함수의 실행 컨텍스트 생성
let b = 3; // b 변수 선언 및 할당
function boo2() {
// boo2 함수의 실행 컨텍스트 생성
console.log(b); // 여기서 상위 스코프의 변수를 참조하여 3을 출력
boo3(); // boo3 함수 호출
function boo3() {
// boo3 함수의 실행 컨텍스트 생성
console.log(a); // 참조 에러 발생한다 , a는 boo3의 스코프에 존재하지 않음
}
const a = 2; // a 변수 선언 및 할당, 하지만 const 는 블록 스코프이기 때문에 boo3()에 접근이 불가
}
const a = 1; // a 변수 선언 및 할당
boo2();
}
boo();
// 세 번째 에시코드
function poo(){
const num2 = 2; // num2 의 2를 할당
function poo2(num2) { // function poo2 함수에 매개변수 num2를 할당한다
console.log(num2) // 콘솔을 출력하는데 num2에 저장된 2를 출력한다
}
const num3 = 5; // num3 의 5를 할당
function poo3(num3) { // 함수 poo3에 매개변수 num3을 할당
poo2(num3) // poo2의 매개변수는 함수의 실행 위치의 정의한 매개변수의 이름으로 전달한 값이 할당되고 초기화된다,
// let num3 = 2; 이라는 변수가 초기화된다.
console.log(num3); // 현재 함수에 정의된 매개변수에 전달된 값을 호출한다.
}
const num4 = 6;
function poo4(num4) {
poo3(num2); // poo3의 매개변수 num2는 상위 스코프에 있는 num2를 참조하여 값을 할당하고 poo3 함수의 실행 위치의 변수를 초기화하여 값을 할당한다.
}
poo4(); //poo4() -> undefined
}
poo();
결론 🗒
자바스크립트 실행 컨텍스트에 대해 알아보았습니다. 직접 콘솔을 출력하지말고 그림으로 직접 그려봤지만 순서가 헷갈리는 경우가 종종 있었습니다. 전역 컨텍스트가 생성이 되고, 각 함수를 호출을 하게 되면 새로운 실행 컨텍스트가 생성이 되고 함수 호출이 완료되면 해당 함수의 실행 컨텍스트는 콜 스택에서 제거된다는 것을 알게 되었습니다.
이상으로 자바스크립트 실행 컨텍스트에 대해 마치겠습니다. 감사합니다😃😃😃
LIST
'자바스크립트 기록' 카테고리의 다른 글
[자바스크립트 함수 ] 재귀 함수, 생성자 함수 , this 키워드 (0) | 2025.01.14 |
---|---|
[ 자바스크립트 유용한 정보] TDZ(Temporal Dead Zone)란? (0) | 2025.01.13 |
[자바스크립트 함수] 자바스크립트 함수란(function)? (0) | 2025.01.13 |
[자바스크립트 문법] 자바스크립트 배열(Array) ,push( ), length( ), splice( ) 메서드 (0) | 2025.01.13 |
[자바스크립트 문법 ] 객체란? , 객체의 특징과 값 호출 (0) | 2025.01.12 |