폐쇄에 대한 이해

2510 단어
---컨텐츠 복원 시작 --
우선 어법 작용역부터 말해야 한다
어법 작용역은 함수가 어법을 통해 작용역을 구분하는 것이다.호출된 위치가 아니라 정의된 위치에서 실행됩니다.
 
호출 대상 및 전역 대상
함수를 호출할 때, 그 작용역을 작용하는 작용역체인으로 설정하고, 이 작용역체인 앞에 호출 대상을 추가합니다.
 
패키지를 닫는 삽입 함수로
함수 f에 끼워 넣은 함수 g를 상상해 보세요. f가 호출될 때 그 작용역은 f라는 호출에 대한 호출 대상을 포함하고 그 다음은 전역 대상입니다.g가 호출될 때 f에서 g를 정의한 위치로 돌아가야 하기 때문에 g는 f만 호출될 때 정의된다. 즉, f의 호출 대상은 g의 정의 위치의 일부분이다.그래서 g의 역할 체인은 g의 호출 대상, f의 호출 대상, 전역 대상을 포함한다.
 
다음 코드를 고려하시오
 1 var x = 0;
 2function outer() {
 3             x++;
 4             if(x == 1) {
 5                 function inner() {
 6                     console.log(x);
 7                 }
 8                 return inner;
 9             }
10}
11 
12         var inner = outer();
13         inner();


outer 함수를 호출하고 inner, 즉 outer의 inner 함수를 inner 변수에 부여한 다음에 inner 변수를 호출하면 다섯 번째 줄에서 inner 함수를 정의한 곳으로 돌아갑니다. inner의 정의는 outer가 호출할 때 실행되기 때문에 outer의 호출 대상은 정의된 위치의 일부분이고 x++ 문장도 포함합니다. 즉, 당시 정의된 외곽의 변수의 값은 모두 보존되어 있습니다.이때의 x=1은 inner 함수에서 문장을 실행하고 작용역을 따라 x의 값을 찾기 시작하며 3줄을 찾으면 x가 1인 것을 발견하고 출력을 출력합니다.
 
요약:
클립은 명사이지만 자바스크립트에서 이를 실행할 코드와 이 코드의 작용역으로 구성된 종합체로 묘사하는데 이 종합체를 클립이라고 한다.모든 js 함수를 클립이라고 합니다
그러나 하나의 함수가 정의된 작용역 밖으로 도출될 때만 이런 기술은 연구의 의미를 가지기 때문에 일반적으로 패킷을 하나의 작용역이라고 부르며 다른 함수 중의 변수를 읽는 현상을 호출할 수 있다
 
--- 컨텐츠 복구 완료 --

좋은 웹페이지 즐겨찾기