JavaScript 범위 체인 1부: 범위 체인 정의

黄舟
풀어 주다: 2016-12-20 16:16:35
원래의
1085명이 탐색했습니다.

실행 컨텍스트의 데이터(변수, 함수 선언, 함수 매개변수)는 변수 개체에 속성으로 저장됩니다. 변수 개체는 컨텍스트가 입력될 때마다 생성되고 초기 값으로 채워집니다. 값 업데이트는 코드 실행 단계에서 발생합니다.

이 장에서는 실행 컨텍스트와 직접적으로 관련된 자세한 내용을 논의합니다. 이번에는 범위 체인이라는 주제를 언급하겠습니다.

간략하게 설명하고 핵심만 보여드리자면 스코프체인은 대부분 내부 기능과 관련되어 있습니다.

우리는 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)를 참고해주세요. !


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿