holdanddeepdive/javascript-deep-dive

동적스코프 vs. 정적스코프

Opened this issue · 0 comments

동적 스코프(dynamic scope)

where it was called

  • 함수를 어디서 호출했는지에 따라 함수의 상위 스코프를 결정하는 방식. 정의하는 시점에는 어디서 호출될지 알 수 없으므로 함수가 호출되는 시점에 동적으로 상위 스코프가 결정된다.
  • Perl, Bash Shell 등에서 Dynamic Scope를 따른다.

정적 스코프(static scope) (==렉시컬 스코프(lexical scope))

Where the function was defined

  • 함수를 어디서 정의했는지에 따라 함수의 상위 스코프를 결정하는 방식.
  • 함수가 호출된 위치는 상위 스코프 결정에 어떠한 영향도 주지 않는다.
  • 함수 정의가 실행되어 생성된 함수 객체는 결정된 상위 스코프를 기억한다.
  • JS 외에도 C, Java 등이 정적 스코프를 따른다.