이 글에서는 주로 js 클로저와 콜백, 클로저의 개념과 특징을 설명하고, 예제를 통해 사용 단계와 방법을 분석합니다.
1. 클로저
클로저(closure)는 자바스크립트 언어에서 어려운 단어입니다. 이는 또한 많은 고급 애플리케이션이 클로저에 의존하는 특징이기도 합니다.
클로저에는 세 가지 특성이 있습니다.
2. 외부 매개변수와 변수는 가비지 수집에 의해 재활용되지 않습니다. 메커니즘.
클로저란 다른 함수의 범위에 있는 변수에 액세스할 수 있는 함수를 의미합니다. 클로저를 만드는 가장 일반적인 방법은 함수 내에 다른 함수를 만들고 다른 함수를 통해 이 함수의 지역 변수에 액세스하는 것입니다. 클로저 사용의 한 가지 장점과 단점은 지역 변수가 메모리에 상주할 수 있고 전역 변수를 피할 수 있다는 것입니다. 전역 변수는 모든 모듈에서 호출 가능하며 이는 재앙이 될 수 있습니다. 따라서 개인용, 캡슐화된 지역 변수를 사용하는 것이 좋습니다. 일반 함수가 실행된 후 로컬 활성 객체는 소멸되고 전역 범위만 메모리에 저장됩니다. 그러나 폐쇄의 상황은 다릅니다!
예제 1:
//클로저는 반환 값이 다른 함수인 함수입니다. 부적절하게 사용하면 메모리 소모가 증가합니다(위 예에서 다수의 external()을 정의하면 많은 val 변수가 메모리에 저장됩니다). JavaScript의 가비지 수집 원칙:(1) JavaScript에서 객체가 더 이상 참조되지 않으면 해당 객체는 GC에 의해 재활용됩니다.
(2) 두 객체가 서로를 참조하는 경우; 제3자가 더 이상 참조하지 않으면 서로 참조하는 두 객체도 재활용됩니다.
그렇다면 클로저를 사용하면 어떤 이점이 있을까요? 클로저 사용의 이점은 다음과 같습니다.
1. 변수가 오랫동안 메모리에 남아 있기를 바랍니다.2 전역 변수의 오염을 방지합니다.
3. 2. 콜백
콜백 함수의 원리: 지금 나가고 도착하면 알림을 보냅니다. 이는 "나가기"(함수 실행) 과정에서 "당신"이 할 수 있습니다. 무엇이든, 그리고 "도착할 때"(함수 실행) 완료) 후속 프로세스의 "알림"(콜백)
예 1:
function outer(){
var val = 0;
return function (){
val += 1;
document.write(val + "<br />");
};
}
var outObj = outer();
outObj();//1,执行val += 1后,val还在
outObj();//2
outObj = null;//val 被回收
var outObj1 = outer();
outObj1();//1
outObj1();//2
function doSomething(callback){ callback(1,2); } function numberAdd(a,b){ document.write(a+b); } doSomething(numberAdd);//3// 생성자가 사용되는 Thing 클래스에 doSomething 메소드를 추가합니다. 호출자 호출 패턴
function Thing(name){ this.name = name; }
숫자 배열이 있는 경우 정렬을 위한 공용 메소드를 작성하고 싶지만 정렬 방법은 작은 것부터 큰 것까지 또는 큰 것에서 작은 것)은 정렬 방법을 호출하는 사람에 의해 결정됩니다. 이 정렬 방법은 콜백을 사용하여 구현할 수 있습니다. 하나는 작은 것에서 큰 것으로 정렬하는 것이고 다른 하나는 큰 것에서 정렬하는 것입니다. 개인적으로 콜백은 실제 비즈니스 개발 엔지니어에게 의사 결정 권한을 넘겨주는 것입니다. 이를 어떻게 처리할지 결정하는 것은 우리가 일반적으로 접하는 것과는 다릅니다. 조금 생소하지만 이런 생각은 특히 비동기 프로그래밍에서 이점을 볼 수 있습니다. 다음 예제 코드는 콜백의 일반적인 사용 사례입니다.
위 내용은 JavaScript의 클로저 및 콜백에 대한 예제 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!