1. JavaScript 함수의 범위 체인은 정의 시간 범위 체인과 런타임 범위 체인으로 구분됩니다.
2. 함수가 정의되면 정의 범위 체인을 나타내는 [[scope]] 속성이 있습니다. 정의 범위 체인 [[scope]]은 다음 규칙을 따릅니다. 함수의 정의 범위 체인 [ [scope]]는 항상 해당 함수가 위치한 외부 함수의 실행 범위 체인입니다.
3. 전역 함수의 정의 범위 체인에는 창 속성만 포함됩니다.4. 함수의 실행 범위 체인은 항상 정의 범위 체인의 선두에 있는 현재 활성 개체(인수, 매개변수 및 지역 변수 포함)로 푸시됩니다.
5. 함수 실행 시 항상 스코프 체인의 위에서 아래로 변수 주소를 검색하므로 전역 변수의 주소 지정 속도가 가장 느립니다.6. 내부 기능이 실행되면 전체 범위 체인에 계속 액세스할 수 있습니다. 이것이 클로저가 런타임 시 완성된 외부 함수에 의해 정의된 변수에 액세스할 수 있는 이유입니다.
7. 함수 실행 중에 with 문이 발견되면 with로 지정된 객체의 모든 속성이 범위 체인의 맨 위로 일시적으로 푸시됩니다.8. 함수 실행에서 catch가 발생하면 catch로 지정된 오류 개체가 범위 체인의 맨 위로 일시적으로 푸시됩니다.
예를 들어 이해를 돕기 위해 범위 체인을 그려보겠습니다.
이런 코드가 있습니다.
코드 복사