>  기사  >  웹 프론트엔드  >  자바스크립트 디자인 패턴(2) Closure_javascript 스킬

자바스크립트 디자인 패턴(2) Closure_javascript 스킬

WBOY
WBOY원래의
2016-05-16 18:26:12888검색

Text

클로저의 개념:

클로저는 많은 변수를 갖는 표현식(보통 함수)이고 이러한 변수에 바인딩된 환경이므로 이러한 변수도 표현식 부분입니다.

가장 일반적인 클로저


코드 복사 코드는 다음과 같습니다.

function a() {
var i=0;
return function(){
alert(i )
}
var b= a( );
for(var i=0;i<3;i ){
b()
}


위 코드를 설명하기 전에, 먼저 a를 수락합니다. 함수의 생성 및 실행 과정

첫 번째 단계: 함수 정의, 환경 설정, 범위 체인 생성 이제 a는 전역 변수이고 a의 범위 체인은 다음과 같습니다. window

2단계: a를 실행하고 먼저 범위(a.scope=a)를 만든 다음 활성 개체(callObject)를 만들고 callObject를 a의 범위 체인 맨 위에 놓습니다. a의 범위 체인에는 두 개의 개체(a 및 창)가 포함됩니다.

3단계: 활성 개체에 인수 속성을 추가하여 a 호출 시 매개변수 값을 저장합니다.

4단계: 형식 매개변수 할당 및 내부 변수 활성 객체 a로 이동

javascriptGC 원칙: 객체가 더 이상 참조되지 않으면 해당 객체는 GC에 의해 재활용됩니다. 두 개체가 간섭 없이 서로 참조하는 경우 두 개체도 모두 재활용됩니다.

요약:

1. 먼저 a의 범위 체인이 생성됩니다.

2. a.scope=a, callObject 객체를 생성하고 이를

의 범위에 추가합니다. 3. a 객체에 인수 속성을 추가하고 i 및 return 함수를 활성 객체
4. a가 실행되면 b는 a의 ruturn 함수 값을 가리키고, b는 a의 지역 변수 i를 참조하므로 활성 객체 a는 재활용되지 않습니다. b는 i에 액세스합니다. 처음으로 액세스되는 객체이며 b에서만 액세스할 수 있습니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.