Z mojego osobistego doświadczenia, inne niż przy użyciu funkcji anonimowe do wywoływania zakres, mam również stosować go w for-pętle do zamknięcia. Może to być przydatne, gdy element DOM musi przechowywać swój licznik i nie masz dostępu do bibliotek takich jak jQuery itp.
Załóżmy, że masz elementy 100 DIV
. Kliknięcie pierwszego DIV
element powinien ostrzegać 1, podobnie klikając 56. elementu div powinny ostrzegać 56.
więc podczas tworzenia tych elementów, zazwyczaj zrobić coś takiego
// Assume myElements is a collection of the aforementioned div elements
for (var i = 0; i < 100; ++i) {
myElements[i].onclick = function() {
alert('You clicked on: ' + i);
};
}
będzie ten alert 99, w kasie jest obecnie 99. Wartość i
nie jest tutaj zachowywana.
Jednak kiedy anonimowa funkcja jest wykorzystywana do rozwiązania problemu,
for (var i = 0; i < 100; ++i) {
(function(count){
myElements[count].onclick = function() {
alert('You clicked on: ' + count);
};
})(i);
}
Tutaj wartość i
utrzymuje się i jest wyświetlana poprawna liczba.
Nazywa się to również IIFE. Zobacz http://benalman.com/news/2010/11/immediately-invoked-function-expression/. –