Jak byście wytłumaczyli w dwóch zdaniach czym jest closure w #javascript Np ta definicja byłaby wystarczająca? - 1. funkcja zwracająca inną funkcję która ma dostęp do wartości funkcji wyżej (ze scope chain)
@inteli: closure powstaje wtedy, gdy wewnątrz funkcji deklarujemy inną funkcję. Każdorazowe wywołanie funkcji zewnętrznej tworzy nową kopię funkcji wewnętrznej, która zachowuje swoją własną wersję scope chaina.
Twoja definicja jest prawie dobra, z tym ze a) nie trzeba jej zwracać b) słówko "wartości" zamieniłbym na "zmiennych lokalnych"
@inteli: Ale closure to nie jest operacja zwracania funkcji, tylko to że funkcja ma dostęp do zmiennych w leksykalnym środowisku gdzie jest zdefiniowana
@inteli: Closure przestrzeń zasięgu zmiennych w ramach działania funkcji. Głównie w celu zachowania odrębnych zasięgów podczas wykonywania równolegle asynchronicznych zadań.
@megaloxantha: Widocznie się nie zrozumieliśmy, chodziło mi o to, że każde wywołanie zewnętrznej funkcji tworzy osobną kopię zestawu zmiennych lokalnych dla zwracanej funkcji. Stąd słówko "preserved" bo te zestawy nie giną wraz z funkcją zewnętrzną.
@inteli: Wprawdzie JS zbyt wiele nie umiem ale według mnie to będzie: Closures jest wewnętrzną funkcją, która ma dostęp do zmiennych zewnętrznej funkcji. Są używane po to, żeby dostać się do zmiennych zewnętrznej funkcji zamiast używać zmiennych globalnych.
Np ta definicja byłaby wystarczająca? -
1. funkcja zwracająca inną funkcję która ma dostęp do wartości funkcji wyżej (ze scope chain)
#pytanie #programowanie #informatyka
Twoja definicja jest prawie dobra, z tym ze a) nie trzeba jej zwracać b) słówko "wartości" zamieniłbym na "zmiennych lokalnych"
@megaloxantha: Nie, każda zwrócona funkcja ma swoją własną kopię tych zmiennych
Widocznie się nie zrozumieliśmy, chodziło mi o to, że każde wywołanie zewnętrznej funkcji tworzy osobną kopię zestawu zmiennych lokalnych dla zwracanej funkcji. Stąd słówko "preserved" bo te zestawy nie giną wraz z funkcją zewnętrzną.