>  기사  >  웹 프론트엔드  >  JS 클로저란 무엇입니까? JS 클로저 이해

JS 클로저란 무엇입니까? JS 클로저 이해

不言
不言원래의
2018-09-01 15:56:552552검색

JS에서 클로저란 무엇인가요? 클로저 개념을 처음 접하는 분들은 많은 친구들이 이를 이해하지 못할 것이라고 생각합니다. 다음 글에서는 js 클로저를 이해하는 방법을 알려드리겠습니다.

클로저(closure)는 js에서 어려운 부분이자 특징이기도 합니다. 많은 고급 애플리케이션이 클로저에 의존합니다. 그럼 먼저 js 클로저의 개념을 살펴보겠습니다.

폐쇄란 무엇인가요?

공식 설명에 따르면 소위 클로저란 많은 변수와 이러한 변수에 바인딩된 환경을 포함하는 표현식(보통 함수)을 의미하므로 이러한 변수도 표현식의 일부입니다.

이 개념만으로는 많은 친구들이 이해하기 어렵다고 생각합니다. 결국 이 설명은 너무 "공식적"이므로 js 클로저를 이해하는 방법에 대해 이야기해 보겠습니다. js 클로저가 무엇인지 더 명확하게 이해하겠습니다.

js 클로저 이해

먼저 예를 살펴보겠습니다:

def foo() {
    var a = 1;
    def bar() {
        a = a + 1;
        alert(a);
    }
    return bar;
}
var closure = foo();  // 这个时候返回的是 bar() 这个函数外加其包上的变量 a;
var closure2 = foo(); // 这里同样生成了另外一个闭包(实例)
closure(); // 2
closure2(); // 2 , 绑定了另外一份变量 a
closure(); // 3

이 예에서 우리는 다음을 볼 수 있습니다:

일반 foo() 메소드의 경우 내부에 변수 a가 존재해야 합니다. foo() 메소드가 실행되었으나 foo() 메소드가 새로운 사각형 bar()를 반환하고, 이 메소드는 foo() 메소드의 변수 a에 접근하고(JavaScript는 Scope Chain을 통해 상위 속성에 접근) 메소드의 존재 여부를 확인합니다. bar()는 자체 범위에서 변수 a를 닫는 것과 유사하게 변수 a의 존재 시간을 연장합니다. bar() 메서드가 만료되지 않는 한 변수 a는 항상 bar() 메서드가 존재하고 변수 a가 존재합니다. bar() 메소드를 클로저라고 합니다.

위의 예를 통해 js 클로저에 대한 이해를 다시 요약할 수 있나요?

클로저는 함수에 의해 생성된 어휘 범위이며, 그 안에 생성된 변수는 참조된 후 이 어휘 환경 외부에서 자유롭게 사용할 수 있습니다.

클로저는 일반적으로 내부 변수를 생성하는 데 사용되므로 이러한 변수는 외부에서 마음대로 수정할 수 없으며 지정된 함수 인터페이스를 통해 작동될 수 있습니다.

좋아요, 이제 js 클로저에 대해 더 명확하게 이해하셨습니다. 여전히 이해가 되지 않는다면 PHP 중국어 웹사이트의 javascript 비디오 튜토리얼 컬럼으로 이동하여 이에 대해 알아볼 수 있습니다.

관련 권장사항:

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

1분 안에 js 클로저 이해하기_javascript 기술

js에서 클로저 이해하기

위 내용은 JS 클로저란 무엇입니까? JS 클로저 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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