동적 스코프 vs 정적 스코프

MySprtlty·2022년 8월 30일
0

ETC

목록 보기
1/6

📌동적 스코프

  • 명칭 foo와 연결된 대상체(메모리 공간)가 언제나 하나만 존재한다.
  • 따라서 동일한 명칭을 함수 내부에서 선언할 땐, 원래 대상체 값을 다른 곳에 저장하고 새 값을 저장한다.
  • 문제는 이상태에서 내부적으로 foo를 참조하는 함수를 호출한다면, 함수는 명칭-대상체 대응표를 확인하고 caller의 foo를 참조한다.
  • 즉, 명칭-대상체 대응표가 소스 어디서나 참고할 수 있는 공용 공간에 놓이게 된다.
  • 즉, 동적 스코프는 어디서 함수를 호출하느냐에 따라 값이 변한다. (스코프가 변한다.)

📌정적 스코프

  • Lexical Scope라고도 한다.
  • 현대 언어는 거의 모두 정적 스코프를 사용한다.
  • 함수마다 명칭-대상체 대응표를 갖는다.
  • 즉, 각 함수는 서로의 지역 대상체를 참조할 수 없다.
  • 명칭-대상체 대응표는 그 명칭을 선언한 함수 내에서만 유효하므로 다른 함수를 호출했을 때, 그 함수는 caller의 foo를 참조할 수 없다.

📌비교

  • 가장 큰 차이점은 다음과 같다.

    동적 스코프정적 스코프
    함수가 어디서 호출되느냐에 따라 결정된다.함수가 어디에 정의되어 있느냐에 따라 결정된다.
profile
2Co 4:7

0개의 댓글

Powered by GraphCDN, the GraphQL CDN