반응형
렉시컬 스코프(Lexical Scope)와 다이나믹 스코프(Dynamic Scope)
자바스크립트에서 스코프는 변수 및 함수의 유효 범위를 정의합니다. 렉시컬 스코프와 다이나믹 스코프는 이러한 스코프의 동작 방식을 설명하는 두 가지 주요한 개념입니다.
1. 렉시컬 스코프(Lexical Scope)
렉시컬 스코프는 코드가 작성된 위치에 따라 변수의 스코프가 정의됩니다. 함수가 선언된 위치에서부터 해당 함수가 어디에서 호출되든지 관계없이, 함수 내부에서 선언된 변수는 함수의 렉시컬 스코프에 따라 결정됩니다.
아래는 렉시컬 스코프의 예시 코드입니다.
function outerFunction() {
var outerVariable = 'Outer Variable';
function innerFunction() {
console.log(outerVariable); // 렉시컬 스코프에 의해 외부 함수의 변수에 접근 가능
}
innerFunction();
}
outerFunction(); // 출력 결과: 'Outer Variable'
2. 다이나믹 스코프(Dynamic Scope)
다이나믹 스코프는 함수가 호출된 위치에 따라 변수의 스코프가 동적으로 결정됩니다. 함수가 호출될 때마다 실행 컨텍스트가 생성되고, 실행 컨텍스트 내의 스코프 체인이 해당 호출 위치에 따라 동적으로 변경됩니다.
아래는 다이나믹 스코프의 예시 코드입니다. (자바스크립트는 렉시컬 스코프를 사용하므로 실제로는 다이나믹 스코프를 지원하지 않습니다.)
function outerFunction() {
var outerVariable = 'Outer Variable';
function innerFunction() {
console.log(outerVariable); // 다이나믹 스코프에 의해 호출 위치에 따라 변수에 접근
}
return innerFunction;
}
var inner = outerFunction();
inner(); // 출력 결과: 외부에서 호출된 위치에 따라 'Outer Variable' 출력
위 코드에서 inner() 함수는 외부에서 호출될 때, 외부 호출 위치에 따라 다이나믹 스코프에 따라 outerVariable에 접근합니다.
자바스크립트는 렉시컬 스코프를 사용하기 때문에 실제로는 다이나믹 스코프를 지원하지 않지만, 다른 언어에서 다이나믹 스코프를 사용하는 예제를 보여주기 위해 위와 같은 코드를 작성하였습니다.
반응형
'javascript pure > javascript 코어 개념' 카테고리의 다른 글
18. 메모리 관리(Memory Management) - 3 (0) | 2024.02.16 |
---|---|
17. 메모리 관리(Memory Management) - 2 (0) | 2024.02.16 |
16. 메모리 관리(Memory Management) - 1 (0) | 2024.02.16 |
15. 실행 컨텍스트(Execution Context)와 스코프(Scope) - 3 (0) | 2024.02.16 |
13. 실행 컨텍스트(Execution Context)와 스코프(Scope) - 1 (0) | 2024.02.16 |
12. 이벤트 루프(Event Loop) - 3 (0) | 2024.02.16 |
11. 이벤트 루프(Event Loop) - 2 (0) | 2024.02.16 |
10. 이벤트 루프(Event Loop) - 1 (0) | 2024.02.16 |