실행 컨텍스트의 데이터(변수, 함수 선언, 함수 매개변수)는 변수 개체에 속성으로 저장됩니다. 변수 개체는 컨텍스트가 입력될 때마다 생성되고 초기 값으로 채워집니다. 값 업데이트는 코드 실행 단계에서 발생합니다.
이 장에서는 실행 컨텍스트와 직접적으로 관련된 자세한 내용을 논의합니다. 이번에는 범위 체인이라는 주제를 언급하겠습니다.
간략하게 설명하고 핵심만 보여드리자면 스코프체인은 대부분 내부 기능과 관련되어 있습니다.
우리는 ECMAScript가 내부 함수 생성을 허용하고 상위 함수에서 이러한 함수를 반환할 수도 있다는 것을 알고 있습니다.
var x = 10; function foo() { var y = 20; function bar() { alert(x + y); } return bar; } foo()(); // 30
이런 방식으로 각 컨텍스트에는 고유한 변수 개체가 있다는 것이 분명합니다. 전역 컨텍스트의 경우 이는 전역 개체 자체이고, 함수의 경우 활성 개체입니다.
스코프 체인은 내부 컨텍스트에 있는 모든 변수 개체(상위 변수 개체 포함)의 목록입니다. 이 체인은 변수 쿼리에 사용됩니다. 즉, 위의 예에서 "bar" 컨텍스트의 범위 체인에는 AO(bar), AO(foo) 및 VO(global)가 포함됩니다.
그런데 이 문제를 좀 더 자세히 살펴보겠습니다.
정의부터 시작해서 예시를 좀 더 자세히 살펴보겠습니다.
스코프 체인은 실행 컨텍스트와 연결되며 변수 개체 체인은 식별자 확인에서 변수 조회에 사용됩니다.
함수 호출 시 활성 객체와 이 함수 내의 [[scope]] 속성을 포함하여 함수 컨텍스트의 범위 체인이 생성됩니다. 아래에서는 함수의 [[scope]] 속성에 대해 더 자세히 설명합니다.
은 컨텍스트에서 다음과 같이 표현됩니다.
activeExecutionContext = { VO: {...}, // or AO this: thisValue, Scope: [ // Scope chain // 所有变量对象的列表 // for identifiers lookup ] };
해당 범위는 다음과 같이 정의됩니다.
Scope = AO + [[Scope]]
이 통합 및 식별자 확인 프로세스에 대해서는 아래에서 설명합니다. 이는 함수의 수명주기와 관련이 있습니다.
위 내용은 자바스크립트 스코프 체인 1: 스코프 체인 정의 내용입니다. 스코프 체인 1: 스코프 체인 정의 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요. !