반응형
실행 콘텍스트는 크게 3가지로 나뉩니다. 전역 컨텍스트(Global Context), 함수 컨텍스트 (Funciton Context), Eval 콘텍스트(Eval Context)지만 ,Eval컨텍스트는 중요하지 않아 전역과 함수 실행 컨텍스트를 알아 보겠습니다.
전역 컨텍스트(Global Context)
코드가 로드 될때, 전역변수와 전역 함수, 내장 객체들이 이 켄텍스트에서 등록됩니다. 웹 브라우저에서는 Window 객체가 전역 콘텍스트로 사용되고, Node.js에서는 Global 객체가 전역 콘텍스트로 사용됩니다. 종료 시점은 브라우저 종료 될 때입니다.
var name = "idocleancode"
var globalVar = "I'm a global variable"; // 전역 변수
function globalFunction() { // 전역 함수
console.log('This is a global function');
}
console.log(window.globalVar); // "I'm a global variable"
console.log(window.globalFunction()); // "This is a global function"
var 키워드는 전역객체에 등록됩니다.
함수 컨텍스트(Function Context)
함수가 호출될 때마다, 함수 콘텍스트가 생성됩니다. 함수 내부의 지역 변수, 함수 내부 함수, 매개 변수 등이 이 콘텍스트에 정의됩니다. 종료 시점은 함수가 종료될 때입니다.
function myFunction() {
var localVar = "I'm a local variable"; // 지역 변수
function innerFunction() { // 내부 함수
console.log('This is an inner function');
}
console.log(localVar); // "I'm a local variable"
innerFunction(); // "This is an inner function"
}
myFunction(); // 함수 실행 컨텍스트 생성
myFunction() 호출할 때 변수 localVar와 innerFunction이 함수 실행 콘텍스트에 등록이 됩니다.
전역, 함수 컨텍스트 차이점
특징 | 전역 컨텍스트 | 함수 컨텍스트 |
생성 시점 | 브라우저 시작 시 | 함수 호출 시 |
포함하는 환경 객체 | window 객체 |
함수의 매개변수, 지역 변수, 로컬 함수 등
|
this 바인딩 | window 객체 |
함수의 선언 위치
|
스택에서의 위치 | 항상 최상위 |
호출 스택의 가장 위에 위치
|
종료 시점 | 브라우저 종료 시 | 함수 종료 시 |
관련 자료
참고자료
https://www.w3schools.com/js/default.asp
https://developer.mozilla.org/ko/docs/Web/JavaScript
https://www.geeksforgeeks.org/javascript/?ref=dhm
https://roadmap.sh/javascript
반응형