THREE.js를 공부하고 있는데 함수가 다음과 같이 정의되는 패턴을 발견했습니다.
var foo = ( function () {
var bar = new Bar();
return function ( ) {
//actual logic using bar from above.
//return result;
};
}());
(예제는 여기에서 raycast 방법을 참조 하십시오 ).
이러한 방법 의 일반적인 변형은 다음과 같습니다.
var foo = function () {
var bar = new Bar();
//actual logic.
//return result;
};
첫 번째 버전을 일반 변형과 비교하면 첫 번째 버전은 다음 과 같은 점이 다릅니다.
- 자체 실행 기능의 결과를 할당합니다.
- 이 함수 내에서 지역 변수를 정의합니다.
- 로컬 변수를 사용하는 논리가 포함 된 실제 함수를 반환합니다 .
따라서 주요 차이점은 첫 번째 변형에서 막대는 초기화시 한 번만 할당되고 두 번째 변형은 호출 될 때마다이 임시 변수를 생성한다는 것입니다.
이것이 사용되는 이유에 대한 나의 가장 좋은 추측은 bar의 인스턴스 수를 제한하고 (하나만 있음) 메모리 관리 오버 헤드를 절약한다는 것입니다.
내 질문 :
- 이 가정이 맞습니까?
- 이 패턴의 이름이 있습니까?
- 이것이 왜 사용됩니까?