본문 바로가기

실행 컨텍스트2

클로저 (Closure) 1. 클로저란? 외부함수 A에서 선언한 "지역변수 a를 참조하는 내부함수 B가 외부로 전달"될 경우 A의 실행 컨텍스트가 종료된 이후에도 변수 a가 사라지지 않는 현상(참조할 수 있는 현상) 지역변수를 참조하는 내부함수를 외부에 전달하면 클로저! 내부함수에서 외부 변수를 사용하면 클로저! ✅ 내부함수를 외부로 전달하는 방법은 함수를 return 하거나 콜백으로 전달 2. 일반함수의 경우? outer함수의 실행 컨텍스트가 종료되기 전에 이미 inner함수의 실행 컨텍스트가 종료돼 있으므로 이후 별도로 inner함수를 호출할 수 없다. 일반 함수와 마찬가지로 outer의 Lexical Environment가 모두 가비지 컬렉팅 대상에 포함! ( inner가 먼저 종료되므로 outer의 Lexical Envi.. 2022. 3. 30.
스코프 체인 예시 실행 컨텍스트의 LexicalEnvironment 수집 정보는 - enviornmentRecord (변수정보 수집)(호이스팅) - outerEnvironmnetReference (스코프 체인) (선언될 당시의 LexicalEnvironment를 참조) "var a = 3"의 유무에 따라서 스코프체인 값이 바뀌는 예시를 기록해보고자 한다. 1) 4번째 줄이 undefined인 이유 inner의 environmentRecord에 a가 "있기때문에" undefined 출력 (아직 할당된 값은 없어서 undefined) var a = 1; var outer = function() { var inner = function() { console.log(a); // undefined var a = 3; }; inne.. 2021. 12. 25.