>  기사  >  웹 프론트엔드  >  폐쇄의 적용 시나리오는 무엇입니까?

폐쇄의 적용 시나리오는 무엇입니까?

hzc
hzc원래의
2020-06-28 13:47:138259검색

클로저 애플리케이션 시나리오는 다음과 같습니다. 1. 함수 참조를 사용하는 SetTimeout 호출 2. 전역 변수를 작은 범위로 대체 3. 개인 변수 및 개인 함수에 대한 액세스 권한이 있는 공용 메서드.

폐쇄의 적용 시나리오는 무엇입니까?

함수 내부의 지역 변수는 함수 외부에서 접근할 수 없지만, 함수 내부의 함수는 이 함수 내의 지역 변수에 접근할 수 있으므로, 함수 외부에서 함수 내부의 지역 변수에 접근하기 위해 클로저를 사용합니다. 그러나 메모리 누수가 쉽게 발생할 수 있으므로 주의해서 사용해야 합니다.

클로저 사용 시나리오:

1], 함수 참조 방법을 사용한 setTimeout 호출

setTimeout의 첫 번째 매개변수는 일반적으로 실행될 함수이고 두 번째 매개변수는 지연 시간입니다.

setTimeout을 통해 코드 조각을 호출하려면 함수 개체에 대한 참조를 첫 번째 매개변수로 전달해야 하지만 이 함수 개체에 대한 참조는 지연될 개체에 대한 매개변수를 제공할 수 없습니다. 이때 다른 함수를 호출하여 내부 함수의 호출을 반환하고 해당 내부 함수 객체의 참조를 setTimeout 함수에 전달할 수 있습니다. 외부 함수 호출 시 내부 함수 실행 시 필요한 매개변수가 전달됩니다. . 내부 함수를 실행할 때 setTimeout이 사용됩니다. 내부 함수는 외부 함수 호출 시 제공된 매개변수의 위조를 방지할 수 있기 때문에 매개변수를 전달할 필요가 없습니다.

폐쇄의 적용 시나리오는 무엇입니까?

2], 전역 변수 대신 작은 범위

폐쇄의 적용 시나리오는 무엇입니까?

3], 개인 변수에 액세스하는 권한 있는 방법?

권한 있는 메서드: 개인 변수 및 개인 함수에 액세스할 수 있는 공용 메서드

개인 변수에는

1), 지역 변수

2), 함수 매개변수

3), 함수 내부에 정의된 기타 함수( 클로저 )

폐쇄의 적용 시나리오는 무엇입니까?

위 코드의 생성자는 getName(), setName()이라는 두 가지 권한 있는 메서드를 정의합니다. 이 두 메서드는 객체를 통해 액세스할 수 있으며 둘 다 개인 변수 이름에 액세스할 수 있지만 생성자 외부의 Person에서는 , 이름에 액세스할 수 있는 방법이 없습니다. 이 두 메서드는 함수 내부에 정의되어 있으므로 범위 체인을 통해 클로저로 이름에 액세스할 수 있습니다

추천 튜토리얼: "JS Tutorial"

위 내용은 폐쇄의 적용 시나리오는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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