Programming/JavaScript
2020.07.10 실행 컨텍스트
프로그래밍밍
2020. 7. 10. 17:09
반응형
저번 글에서 설명한 콜스택처럼 자바스크립트 내에서도 실행함수가 쌓이는 곳이 있는데 이를 실행 컨텍스트라고 부른다. 함수가 실행컨텍스트에 쌓이는 방식은 콜스택과 똑같다.
이제 예제의 함수를 보고 실행 컨텍스트 설명을 하려고 한다.
실행 컨텍스트가 실행되면 함수실행을 위해 활성 객체가 만들어진다.
*활성객체 - 지역변수,매개변수,함수선언을 포함하고있는 객체
그림으로 표현하자면
활성객체가 생성되면 이후에 argument객체를 생성하고 arguments property를 참조하게된다.
그리고나서 실행 컨텍스트의 유효범위를 나타내는 스코프 정보를 생성한다. 이는 연결리스트 형태로 스코프 정보를 관리하는데 스코프체인이라고 부른다. 스코프체인은 scope라는 프로퍼티로 저장된다.
스코프체인에 scope라는 프로퍼티가 저장이 되고나면 매개변수가 초기화되고 지역변수와 함수를 생성한다. 지역변수와 함수는 실제로 사용하기전까지는 메모리에 할당만되고 초기화는 이루어지지 않으므로 undefiend형태를 띄게 된다.
이렇게 func의 실행 컨텍스트는 끝이나고 뒤이어 func2의 실행컨텍스트가 실행된다.
마지막줄의 리턴에서 func2의 내부를 보게되면 this를 통해 변수 a,b를 바인딩 하는것을 볼수있다.
따라서 결과는 10이라는 숫자가 나오게 된다.