참조 : 클로저의 실제 사용법
실제로 클로저는 우아한 계산을 생성하여 다양한 계산, 지연된 호출, 콜백, 캡슐화 된 범위 생성 등을 사용자 지정할 수 있습니다.
정렬 조건 함수를 인수로 허용하는 배열의 정렬 방법의 예는 다음과 같습니다.
[1, 2, 3].sort(function (a, b) {
... // sort conditions
});
기능 인수의 조건에 따라 새 배열을 맵핑하는 배열의 맵 메소드로 기능 맵핑 :
[1, 2, 3].map(function (element) {
return element * 2;
}); // [2, 4, 6]
종종 검색에 대한 거의 무제한 조건을 정의하는 함수 인수를 사용하여 검색 기능을 구현하는 것이 편리합니다.
someCollection.find(function (element) {
return element.someProperty == 'searchCondition';
});
또한 함수를 요소의 배열에 적용하는 forEach 메소드와 같이 기능을 적용하는 것에 주목할 수 있습니다.
[1, 2, 3].forEach(function (element) {
if (element % 2 != 0) {
alert(element);
}
}); // 1, 3
함수는 인수 (적용된 인수 목록 및 호출 된 위치 지정된 인수)에 적용됩니다.
(function () {
alert([].join.call(arguments, ';')); // 1;2;3
}).apply(this, [1, 2, 3]);
지연된 통화 :
var a = 10;
setTimeout(function () {
alert(a); // 10, after one second
}, 1000);
콜백 함수 :
var x = 10;
// only for example
xmlHttpRequestObject.onreadystatechange = function () {
// callback, which will be called deferral ,
// when data will be ready;
// variable "x" here is available,
// regardless that context in which,
// it was created already finished
alert(x); // 10
};
보조 객체를 숨길 목적으로 캡슐화 된 범위 만들기 :
var foo = {};
(function (object) {
var x = 10;
object.getX = function _getX() {
return x;
};
})(foo);
alert(foo.getX());// get closured "x" – 10