Lexical과 closure라는 이름을 왜 붙인 걸까요?

작명을 할 때 의미 있는 단어를 사용했을텐데
Lexical은 검색해보면 "어휘의"라고 나오고,
closure는 "폐쇄"라고 나옵니다.

Lexical scope, Lexical environment 같이 lexical이라는 작명을 한 이유가 있을까요?

마찬가지로 closure는 폐쇄, 닫힘이라고 검색되는데,
왜 이런 이름을 붙인 걸까요?

저도 같은 고민을 한 적 있습니다. 왜 lexical 이라 했을까 왜 closure라 했을까?
명쾌한 대답은 찾지 못했지만 구글링하면서 내린 나름의 결론은 이렇습니다.

lexical scope

  • 코드가 적성된 위치(실제 text의 위치)에 따라 scope가 결정되기 때문에 lexical scope
    • 논리적인 실행 순서 등에 의해 동적(dynamic)으로 결정되는 것이 아니라 코드가 작성된 글자의 위치에 의해 고정(static) 됨 => 글자의 위치! 그래서 lexical

closure

  • 대개 함수(A) 내에서 선언한 변수(x)의 경우 함수(A)가 실행이 완료되면 사라지고 접근할 수 없게 되지만 함수(A) 안에서 생성한 함수(B)가 있을 경우 lexical scope에 의해 안에서 생성한 함수(B)에서는 함수(A)에서 선언한 변수(x)에 접근 할 수 있다. => 안에서 선언한 함수(B)에서 변수(x)를 접근하고 있다면 x를 사라지지 못하도록 봉인해버려서 closure
좋아요 1