Referensi: Penggunaan praktis penutupan
Dalam praktiknya, penutupan dapat membuat desain yang elegan, memungkinkan penyesuaian berbagai perhitungan, panggilan yang ditangguhkan, panggilan balik, membuat lingkup yang dienkapsulasi dll.
Contoh metode pengurutan array yang menerima sebagai argumen fungsi pengurutan kondisi:
[1, 2, 3].sort(function (a, b) {
... // sort conditions
});
Memetakan fungsional sebagai metode peta array yang memetakan array baru dengan kondisi argumen fungsional:
[1, 2, 3].map(function (element) {
return element * 2;
}); // [2, 4, 6]
Seringkali lebih mudah untuk mengimplementasikan fungsi pencarian dengan menggunakan argumen fungsional yang mendefinisikan kondisi pencarian yang hampir tidak terbatas:
someCollection.find(function (element) {
return element.someProperty == 'searchCondition';
});
Selain itu, kami dapat mencatat penerapan fungsi sebagai, misalnya, metode forEach yang menerapkan fungsi ke array elemen:
[1, 2, 3].forEach(function (element) {
if (element % 2 != 0) {
alert(element);
}
}); // 1, 3
Fungsi diterapkan pada argumen (ke daftar argumen - berlaku, dan argumen diposisikan - dalam panggilan):
(function () {
alert([].join.call(arguments, ';')); // 1;2;3
}).apply(this, [1, 2, 3]);
Panggilan yang ditangguhkan:
var a = 10;
setTimeout(function () {
alert(a); // 10, after one second
}, 1000);
Fungsi panggilan balik:
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
};
Pembuatan lingkup enkapsulasi untuk tujuan menyembunyikan objek tambahan:
var foo = {};
(function (object) {
var x = 10;
object.getX = function _getX() {
return x;
};
})(foo);
alert(foo.getX());// get closured "x" – 10