-
[javascript] 실행컨텍스트에 대하여javascript 2022. 1. 21. 14:38반응형
실행컨텍스트 : 실행가능한 코드가 실행되기 위해 필요한 환경
실행컨텍스트 구조 : 변수객체, 스코프체인, this value
변수객체의 속성 : 1.변수, 2.(parameter,argument)(전역컨텍스트 말고 함수컨텍스트인경우),
3.함수 선언식(함수표현식은 아니다 그래서 함수 표현식은 호이스팅이 안됨)
함수컨텍스트에서의 변수객체와 전역컨텍스크에서의 변수객체의 차이 :
전역컨텍스트에서 변수객체는 GO(전역객체를 가리킨다)
함수컨텍스트에서 변수객체는 AO(활성객체를 가리킨다)
GO(전역객체) 와 AO(활성객체) 의 차이 : GO 는 전역변수와 전역에 선언된 함수를 포함한다. AO 는 지역변수와 지역에선언된 함수를 포함한다 + (parmameter, argument) : 이 둘의 차이 = 함수가 선언될때 아직정해지지 않은 매개변수 parameter, 함수가 호출될때 parameter 자리에 들어간 인자 argument))
스코프체인 : 함수의 중첩에서 부모의 함수의 활성객체(AO)를 스코프체인이 순차적으로 가지고 있다.(최상단의 부모는 전역객체(GO)를 가리킨다.) 자식함수는 스코프체인을 통해 부모함수의 활성객체에 접근할수 있다.
이러한 스코프체인은 함수가 선언될때 보유 하고 있는데 이때 해당 함수의 어휘적환경(lexical scope) 이 정해지게 되고 함수를 실행할때 해당하는 변수가 없을때 스코프체인을 통해 상위 스코프에 접근해 변수를 조회할수 있는데 여기서 나오는게 클로저 개념이다.
클로저: 함수와 함수 선언시 lexical 환경의 조합
this value : this 에 해당하는 값이 할당 된다. 스코프체인은 함수가 선언될때 정해지지만 this 의 경우 호출될때 정해지게된다 왜냐하면 호출되는 패턴에 따라서 해당하는 this 가 달라지기 때문이다.
함수가 호출되는 패턴 :
1. 함수호출 ( this > 전역객체 )
2. 메서드호출 ( this > 해당메서드를 소유한 객체 )(이때 메서드 의 this 는 소유한 객체를 가리키지만 메서드 내부함수의 this 는 전역객체 를 가리킨다라는것을 주의 해야한다. 그냥 기본적으로 함수의 호출은 this 가 전역객체를 가리킨다라고 생각하면 된다)
3. 생성자 함수에서의 호출 ( this > 새로운 빈 객체 )( 여기에 속성이랑 메서드를 할당할수 있다.)
4. apply,bind,call 직접 지정
https://poiemaweb.com/js-execution-context
'javascript' 카테고리의 다른 글
[javascript] 객체 접근 dot notation(.) , bracket notation([]) (0) 2022.07.08 [javascript] target과 currentTarget 의 차이 (0) 2022.03.07 [실수] e.target.value (0) 2022.01.06 urlSearchParams (0) 2021.12.27 [자바스크립트] target 과 currentTarget 차이 (0) 2021.06.11