>웹 프론트엔드 >JS 튜토리얼 >js의 클로저 사용에 대한 자세한 설명

js의 클로저 사용에 대한 자세한 설명

php中世界最好的语言
php中世界最好的语言원래의
2018-03-23 15:50:221554검색

이번에는 js 클로저 사용에 대한 자세한 설명을 가져오겠습니다. js 클로저 사용 시 주의 사항은 무엇인가요?

Closure

중국어 의미는 패키지를 닫는 것입니다. function의 범위를 패키지로 생각하면 이 단어는 그 역할을 생생하게 반영합니다. 함수의 일반적인 실행 흐름은 함수 내의 명령문이 실행된 후 프로그램이 자동으로 함수의 범위를 소멸시키는 것입니다. 그러나 함수에 다른 함수가 선언되고, 부모 함수를 참조하는 변수가 있는 경우. 하위 함수가 실행되면 클로저가 형성됩니다. 이는 상위 함수의 범위를 닫고 프로그램이 이를 파괴하는 것을 방지하는 것과 같습니다.

예:

function a() {
  var name = "xuxu";
  function b() {
    console.log(name);
  }
  // 此处产生闭包 
  b();
} 
a();

클로저는 함수가 자신이 위치한 범위 체인을 기억하고 액세스할 수 있을 때 생성됩니다. 물론 대부분의 클로저는 하위 함수 호출이 다음에서 이루어질 수 있기 때문에 그렇게 직관적이지 않습니다. 상위 함수 기타 예:

function a() {
  var name = "xuxu";
  function b() {
    console.log(name);
  }
  return b;
} 
var c=a();
// 此处产生闭包 此处的c函数其实就是a函数
c();

위 코드를 통해 클로저의 이점도 볼 수 있습니다. 즉, 전역 범위에서 로컬 범위(함수)의 범위에 액세스합니다(여기에 너비가 있습니다). Value는 일반적인 어휘 범위에 따라 수행할 수 없지만 클로저를 사용하면 가능합니다. 그런 다음 우리가 일반적으로 작성하는 항목을 더 살펴보겠습니다.

function foo() {
  var a = 2;
  function baz() {
     // 2
    console.log( a ); 
  }
  bar( baz );
}
function bar(fn) {
// 大家快看呀,这就是闭包!
  fn(); 
}

또는

var fn;
function foo() {
  var a = 2;
  function baz() {
    console.log( a );
  }
  // 将baz分配给全局变量
  fn = baz; 
}
function bar() {
   // 大家快看呀,这就是闭包!
  fn();
}
foo();
// 2
bar();

위도 클로저이므로 하위 함수가 함수 내부에서 호출되거나 내부 함수가 어떤 방법으로 어휘 함수 외부로 전달됩니다. 범위, 원래 정의 범위에 대한 참조를 보유하고 함수가 실행될 때마다 클로저가 사용됩니다.

이 기사의 사례를 읽은 후 방법을 마스터했다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!

추천 자료:

js의 범위 및 사전 구문 분석에 대한 자세한 설명

채팅방을 구현하기 위한 HTML

node+express 구현을 위한 Vue 열거 유형

Observer 모드 페이지 양 변경 Counting

위 내용은 js의 클로저 사용에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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