해결된 질문
작성
·
173
·
수정됨
0
3:18 쯤에 아래와 같이 설명해주셨는데요.
"이전에는 마치 함수가 종료될 때마다 execution context 가 제거되고, 그 안에 있던 lexical environment 도 제거되는 것처럼 설명을 드렸는데요.
지금과 같이 내부에서 함수가 만들어지는 경우에는 이렇게 lexical environment 가 유지가 됩니다."
위 내용이 헷갈려서 그러는데 아래 1), 2) 중 어떤 내용이 맞는걸까요? ㅠㅠ
"함수 A의 내부에서 또 다른 함수 B가 생성되고 함수 A의 실행이 종료될 경우" 에
1) A 함수의 execution context 는 제거되지만 A 함수의 lexical environment 는 유지가 된다.
2) A 함수의 execution context 와 A 함수의 lexical environment 모두 유지된다.
저는 "EC 안에 LE 가 생성된다"고 이해했기 때문에 2번이 맞다고 생각하고 있습니다.
답변 부탁드리겠습니다 ㅠㅠ
답변 1
0
안녕하세요
execution context 는 함수의 실행 정보를 의미하기 때문에 실행이 끝나면 제거되는 게 맞습니다 (1번)
다만 함수 내부에서 새로운 함수가 만들어지는 경우에는,
생성된 함수가 부모 함수의 lexical environment 를 참조하게 되면서 lexical environment 는 삭제가 되지 않습니다
만약 내부에서 새로운 함수가 만들어지지 않았다면 lexical environment 를 참조하는 것이 없으므로 execution context 가 제거될 때 같이 사라질 거구요