>  기사  >  웹 프론트엔드  >  한 문장으로 요약: 폐쇄란 무엇입니까?

한 문장으로 요약: 폐쇄란 무엇입니까?

零下一度
零下一度원래의
2017-06-26 15:47:402383검색

한 문장으로 말하자면, 클로저는 범위 내에서 외부 바인딩을 캡처하는 함수입니다.

공식 정의: 많은 변수와 이러한 변수에 바인딩된 환경이 있는 표현식(일반적으로 함수)입니다. 이러한 변수는 표현식의 일부라고도 불리기 때문입니다.

자유 변수와 클로저의 관계: 클로저 생성 시 자유 변수는 닫혀 있습니다.

내부 논리는

자유 변수입니다. 함수 내부에 다른 함수가 있는 경우 이러한 내부 함수는 외부 함수에 선언된 변수에 액세스할 수 있습니다(이러한 변수를 자유 변수라고 함).

클로저의 세 가지 특징:

1. 함수 중첩 함수

2. 외부 매개변수와 변수는 함수 내에서 참조될 수 있습니다

3. 매개변수와 변수는 가비지 수집 메커니즘에 의해 재활용되지 않습니다.

클로저의 단점은 메모리 사용량이 증가한다는 점입니다. 부적절한 사용은 쉽게 메모리 누수를 일으킬 수 있습니다.

클로저의 이점: 1. 메모리에 오랫동안 상주 가능

2. 전역 변수의 오염 방지

3. 전용 멤버의 존재

function fn(){//Closure fn()var a = 10 ;function f1(){a++;console.log(a);}return f1;}var f = fn();f() f()

闭包解决索引值问题:

 

 


 
 
 
  charset="UTF-8">
  <span class="html-tag">
 
 
 
 
  • 1
  •  
  • 2
  •  
  • 3
  •  
  • 4
  •  
     
     
     
     

    메모리 누수 문제:

    Ie의 JS 객체와 DOM 객체는 서로 다른 가비지 수집 메커니즘을 사용하므로 클로저로 인해 IE에서 메모리 누수가 발생합니다. 즉, 메모리에 있는 요소가 파괴될 수 없습니다.

    function closure(){
    var oDiv = document.getElementById("div1");//oDiv는 사용 후에도 메모리에 남아 있습니다.
    oDiv.onclic = function(){
    alert("oDiv.innerHTML");//여기서 oDiv를 사용하면 메모리 누수가 발생합니다
    };

    }

    closure();

    //메모리 누수를 방지하기 위해 oDiv를 역참조 function closure(){ var oDiv = document.getElementById("div1");//oDiv를 모두 사용한 후 항상 상주 memory var test = oDiv.innerHTM oDiv.onclic = function(){ Alert(test);//여기서 oDiv를 사용하면 메모리 누수가 발생합니다 }

    위 내용은 한 문장으로 요약: 폐쇄란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.