javascript 작용 도 메 인 체인 에 대한 상세 한 설명

javascript 작용 도 메 인 체인 에 대한 상세 한 설명
1.JavaScript 역할 영역
모든 프로 그래 밍 언어 는 작용 역 의 개념 을 가지 고 있다.쉽게 말 하면 작용 역 은 변수 와 함수 의 접근 가능 한 범위 이다.즉,작용 역 은 변수 와 함수 의 가시 성과 생명주기 를 제어 한다.자 바스 크 립 트 에서 변수의 작용 역 은 전역 작용 역 과 국부 작용 역 두 가지 가 있다.
전역 역할 영역(글로벌 범위)
코드 에서 어느 곳 에서 든 접근 할 수 있 는 대상 은 전역 작용 역 을 가지 고 있 습 니 다.일반적으로 몇 가지 상황 은 전역 작용 역 을 가지 고 있 습 니 다.
(1)최 외층 함수 와 최 외층 함수 밖에서 정 의 된 변 수 는 전역 작용 역 을 가지 고
예 를 들 면:

var authorName="Burce_zxy";
function doSomething(){
var blogName="     zxy";
function innerSay(){alert(blogName);
}
innerSay();
}
alert(authorName); //Bruce_zxyalert(blogName); //    doSomething(); //     zxyinnerSay() //    
(2)모든 마지막 에 직접 할당 을 정의 하 는 변 수 는 전역 역할 영역 으로 자동 으로 설명 합 니 다.예 를 들 어:

function doSomething()
{
var authorName="Bruce_zxy";
blogName="     zxy";
alert(authorName);
}
alert(blogName); //     zxyalert(authorName); //    
변수 blogName 은 전역 역할 영역 을 가지 고 있 으 며,authorName 은 함수 외부 에서 접근 할 수 없습니다.
(3)모든 window 대상 의 속성 은 전역 역할 영역 을 가지 고 있 습 니 다.
일반적인 상황 에서 window 대상 의 내 장 된 속성 은 모두 전체 역할 영역 을 가지 고 있 습 니 다.예 를 들 어 window.name,window.location,window.top 등 입 니 다.
국부 작용 역(국부 범위)
전역 작용 역 과 반대로 국부 작용 역 은 일반적으로 고정된 코드 세 션 에서 만 접근 할 수 있 습 니 다.가장 흔히 볼 수 있 는 예 를 들 어 함수 내부 에서 도 일부 지역 에서 도 이러한 작용 역 을 함수 작용 역으로 만 드 는 사람 을 볼 수 있 습 니 다.예 를 들 어 다음 코드 의 blogName 과 함수 innerSay 는 모두 국부 작용 역 만 가지 고 있 습 니 다.

function doSomething()
{
var blogName="     zxy";
function innerSay(){alert(blogName);
}innerSay();
}
alert(blogName); 
2.역할 영역 체인(Scope Chain)
JavaScript 에서 함수 도 대상 입 니 다.실제로 JavaScript 에 서 는 모든 것 이 대상 입 니 다.함수 대상 은 다른 대상 과 마찬가지 로 코드 를 통 해 접근 할 수 있 는 속성 과 자바 스 크 립 트 엔진 만 접근 할 수 있 는 내부 속성 을 가지 고 있 습 니 다.그 중의 한 내부 속성 은[Scope]로 ECMA-262 표준 제3 판 에 의 해 정의 되 었 다.이 내부 속성 은 함수 가 만 든 역할 영역 에서 대상 의 집합 을 포함 하고 이 집합 은 함수 의 역할 영역 체인 이 라 고 불 리 며 어떤 데이터 가 함수 에 접근 할 수 있 는 지 결정 한다.
함수 가 생 성 되면 도 메 인 체인 은 이 함수 의 역할 도 메 인 에 접근 할 수 있 는 데이터 대상 으로 채 워 집 니 다.예 를 들 어 다음 함수 정의:

function add(num1,num2) 
{
var sum = num1 + num2;
return sum;
}
함수 add 를 만 들 때 도 메 인 체인 에 전역 대상 을 채 웁 니 다.이 전역 대상 은 모든 전역 변 수 를 포함 합 니 다.다음 그림 에서 보 듯 이(주의:그림 은 모든 변수의 일부분 만 예 시 됩 니 다):

전역 변수
함수 add 의 역할 영역 은 실행 할 때 사 용 됩 니 다.예 를 들 어 다음 코드 를 실행 합 니 다.

var total = add(5,10);
이 함 수 를 실행 할 때'실행 기 컨 텍스트(execution context)'라 는 내부 대상 을 만 들 고 실행 기 컨 텍스트 는 함수 실행 시의 환경 을 정의 합 니 다.모든 런 타임 컨 텍스트 는 자신의 역할 도 메 인 체인 이 있 습 니 다.식별 자 를 분석 하 는 데 사 용 됩 니 다.런 타임 컨 텍스트 가 생 성 되 었 을 때 그 역할 도 메 인 체인 은 현재 실행 함수 의[Scope]에 포 함 된 대상 으로 초기 화 됩 니 다.이 값 들 은 함수 에 나타 나 는 순서에 따라 운행 기 문맥 의 역할 도 메 인 체인 에 복 사 됩 니 다.이들 은 공동으로 새로운 대상 을 구성 했다.'활동 대상(activation object)'이 라 고 한다.이 대상 은 함수 의 모든 부분 변수,명명 매개 변수,매개 변수 집합 과 this 를 포함 한 다음 에 이 대상 은 역할 도 메 인 체인 의 전단 으로 밀 려 들 고 운행 기 문맥 이 취소 되면 활동 대상 도 이에 따라 소각 된다.새로운 역할 도 메 인 체인 은 다음 그림 과 같다.
새로운 역할 영역 체인
함수 실행 과정 에서 변 수 를 만 나 지 못 하면 식별 자 분석 과정 을 거 쳐 데 이 터 를 어디서 얻 고 저장 할 지 결정 합 니 다.이 과정 은 역할 도 메 인 체인 의 머리,즉 활동 대상 부터 검색 하고 같은 이름 의 식별 자 를 찾 습 니 다.찾 으 면 이 식별 자 에 대응 하 는 변 수 를 사용 합 니 다.역할 도 메 인 체인 의 다음 대상 을 계속 검색 하지 못 하면 모든 대상 을 찾 지 못 하면 이 식별 자 는 정의 되 지 않 았 다 고 생각 합 니 다.함수 실행 과정 에서 모든 식별 자 는 이러한 검색 과정 을 거 쳐 야 합 니 다.
궁금 한 점 이 있 으 시 면 메 시 지 를 남기 거나 본 사이트 의 커 뮤 니 티 에 가서 토론 을 교류 하 세 요.읽 어 주 셔 서 감사합니다. 도움 이 되 셨 으 면 좋 겠 습 니 다.본 사이트 에 대한 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기