본문 바로가기
  • soobinhand의 기술 블로그
Computer Science/프로그래밍 언어론

[프로그래밍 언어론] Scope

by soobinhand 2021. 10. 15.
728x90

Scope

  • 변수의 영역입니다.
  • 프로그램에서 변수를 사용할 수 있는 범위입니다.

Static Scope와 Dynamic Scope

1. static scope

  • 함수를 어디서 선언했는지에 따라 상위 스코프를 결정합니다.
  • 함수의 호출이 아니라 함수의 선언에 따라 결정됩니다.

2. dynamic scope

  • 실행 도중 가장 최근에 만나고 아직 return에 의해 제거되지 않은 현재 바인딩을 기준으로 합니다.
  • 실행시점까지 referencing environment 와 관련된 오류 발견이 불가능합니다.
  • 어떤걸, 어떻게 호출하느냐에 따라서 동적으로 값이 바뀝니다.
var number = 1;
function a(){
	var number = 10;
    	b();
}
function b(){
	console.log(number);
}    
a();
b();

위와 같은 예제에서 a()와 b()를 실행시켰을 때 각각 값은 정적이냐 동적이냐에 따라 다릅니다.

정적 스코프 : 둘 다 1을 반환

동적 스코프 : 10과 1 반환

728x90

댓글