. scoping
. 여러 scope에 같은 variable name이 출현할 때, 어디에 binding 할지 정하는 것
. static scoping
. = lexical scoping
. a variable always refers to its nearest enclosing binding
. unrelated to the runtime call stack
. compile time에 binding을 결정
ex)
int x = 0;
int f () { return x; }
int g () { int x = 1; return f(); }
g()는 0을 retrun 함
. dynamic scoping
. control flow를 따라 global x stack에 값을 push, pop함.
. run time에 binding을 결정
ex)
int x = 0;
int f () { return x; }
int g () { int x = 1; return f(); }
g()는 1을 retrun 함