첫 번 째 단계.정의 후:정 의 된 함수 마다 내 적 속성[scope]이 있 습 니 다.한 대상 의 목록 에 대응 하고 목록 의 대상 은 내부 접근 만 할 수 있 습 니 다.예 를 들 어 하나의 전역 함수 A 를 만 들 면 A 의[Scope]내부 속성 에는 하나의 전역 대상(Global Object)만 포함 되 고 만약 에 우리 가 A 에서 새로운 함수 B 를 만 들 면 B 의[Scope]속성 에는 두 개의 대상 이 포함 되 며 함수 A 의 Activation Object 대상 은 앞 에 있 고 전역 대상(Global Object)은 뒤에 있다.한 마디 로 하면 한 함수 의[Scope]속성 에서 대상 목록 의 순 서 는 이전 함수 의 Activation Object 대상 이 고 그 다음 에 상층 부 에서 가장 바깥쪽 의 전체 대상 까지 입 니 다.두 번 째 단계.실행 시:함수 가 실 행 될 때 실행 가능 한 대상(Execution Object)을 자동 으로 만 들 고 역할 도 메 인 체인(Scope Chain)을 연결 합 니 다.역할 도 메 인 체인 은 다음 두 단 계 를 통 해 만들어 져 식별 자 분석 에 사 용 됩 니 다.우선,함수 대상[Scope]내부 속성 중의 대상 을 역할 도 메 인 체인 Scope Chain 에 순서대로 복사 합 니 다.그 다음 에 함수 가 실 행 될 때 새로운 Activation Object 대상 을 만 듭 니 다.이 대상 에는 this,인자(arguments),부분 변수(이름 을 가 진 매개 변수 포함)의 정의 가 포함 되 어 있 습 니 다.이 Activation Object 대상 은 역할 도 메 인 체인 의 맨 앞 에 있 습 니 다.그래서 Scope Chain 에서 마지막 순 서 는 이 함수 의 Activation Object 이 고 그 다음 에 상층 함수 의 Activation Object 이 며 상층 의 Activation Object 이 며 Global Object 까지 입 니 다.js 코드 를 실행 하 는 과정 에서 식별 자 를 만나면 식별 자의 이름 에 따라 문맥(Execution Context)을 실행 하 는 역할 도 메 인 체인 에서 검색 합 니 다.도 메 인 체인 의 첫 번 째 대상(이 함수 의 Activation Object 대상)부터 찾 지 못 하면 도 메 인 체인 의 다음 대상 을 검색 하여 식별 자의 정 의 를 찾 을 때 까지 반복 합 니 다.역할 영역 에서 마지막 대상,즉 전역 대상(Global Object)을 검색 한 후에 도 찾 지 못 하면 오류 가 발생 하여 undefined 를 알려 줍 니 다.이 를 통 해 얻 은 제안:1.부분 변 수 를 사용 하 는 것 은 개인 속성 과 관련 된 문제 가 아니 라 국부 변 수 는 상기 과정 에서 볼 수 있 고 검색 시간 을 줄 일 수 있 습 니 다(주:일반적인 상황 에서 브 라 우 저의 최적화 행 위 는 포함 되 지 않 습 니 다).2.with 문 구 를 사용 하지 마 세 요.실행 컨 텍스트(Execution Context)의 역할 도 메 인 체인 을 수정 하고 맨 앞 에 대상(Variable Object)을 추가 하기 때 문 입 니 다.마찬가지 로 try-catch 구문 에 있 는 catch 구문 블록 도 유사 하 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다: