Funkcje anominowe |
Wpisany przez Patryk yarpo Jar | |||
poniedziałek, 01 lutego 2010 12:38 | |||
JS jako jeden z najbardziej ekspresyjnych języków posiada ciekawy i często wygodny mechamnizm funkcji anonimowych.
Polega to na tworzeniu funkcji, kótre nie mają nazwy i są jakby przypisane do konkretnego miejsca w kodzie.
Spójżmy na przykład (wykorzystanie zwykłych funkcji):
Załóżmy teraz, że funkcja example1 jest wywoływana tylko w jednym miejscu, co więcej jej funkcjonalność jest ścisle związana z example2. Możemy zatem zrobić coś takiego:
Cóż to spowoduje? Nic. Dlaczego?! (Nic, to nie jest najlepsze określenie. Coś się stanie, jednak nie zobaczysz niczego). Przypatrzmy się, co tu się dzieje: 1. wywolujemy funkcję example2() 2. funkcja ta zwraca funckję. Nie wynik działania funkcji, a funkcję. Czyli, jak zrobimy tak: to uzyskamy dwukrotnie alert "example 1". Co zrobiliśmy? Przypisaliśmy do zmiennej e referencję na funkcję (teraz ta zmienna ma w sobie wartośąć adresu, gdzie ta funkcja się znajduje w pamięci. Jeśli wywolasz funkcję - przez dodanie `()' za nazwą zmiennej `e' - zostanie wywołana funkcja przypisana pod zmienną `e'). W poprzednim przypadku (tym z funkcją jawnie zdefiniowaną i nazwaną example1), moglibyśmy to otrzymać tak:
Innymi słowy operator `()' "auktywnia" funkcję. Aby od razu działało jak przykład 1: 1. całe ciało anonimowej funckji objęliśmy w nawiasy. 2. dodaliśmy za ciałem funkcji operator wywołania `()'.
Wynik powyższego kodu będzie identyczny do działania pierwszego listingu z tego artykułu. To oczywiście nie wszystko na temat funkcji anonimowych. Ale o innych rzeczach (rekurencja, sprytne triki) napiszę kiedy indziej :)
Warto pobawić się samemu. Wujek google też z pewnością pomoże :)
|