Wpis z mikrobloga

#webdev #javascript jestem bardzo kiepskim nauczycielem. Jak w kilku prostych zdaniach wytłumaczyć laikowi (zna .net dopiero wchodzi w js) czym jest clousure w JS? Chyba nie skumał pojęcia self-invoking i takie tam. Jak byście to powiedzieli zielonce z JS?
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@findesiecle: byłem nawet na warsztatach u gościa jak robił objazd po świecie. Mam nawet fioletową koszulkę z jego podobizną :P Jak o ES5 książka jest zajebista tak o ES2016 nie dowiedziałem się niczego, czego bym nie wiedział :(

Chodzi o to, że właśnie wiem za dużo i początkujących od razu traktuję jak doświadczony. Na zasadzie "jak możesz tego nie wiedzieć". Już nie raz prowadziłem konferencje i mam problem z tym,
  • Odpowiedz
@npsr: Wiadomo, lenny nieprzypadkowo się tu znalazł :D Ja bym na początek pokazał: jak działa lexical scope, jak odwoływać się do zmiennej poza scopem, a potem coś z HOF, np:

const createAdder = (x) => (y) => x + y;
const addTwo = createAdder(2);
addTwo(3); //5
  • Odpowiedz
Już nie raz prowadziłem konferencje i mam problem z tym, że traktuję wszystkich jak równych sobie a zapominam, że robię to przecież dla ludzi, którzy dopiero zaczynają :/


@npsr: przyznaj sie ze nie przygotowales sie do tej konefrencji odpowiednio. @findesiecle: ma racje. Jak nie umiesz czegos wytlumaczyc w prosty sposob to nie znasz tego dobrze. Ty albo nie umiesz albo nie probowales.
  • Odpowiedz
@karer: No ok. Mogę zawołać self-invoking function oraz przekazać jej prametry aby odpaliła się z counterem 0. Mogę również przypisać ją do zmiennej by stworzyć sobie funkcję prywatną i uniknąć problemu z przekazywaniem parametrów przekazywanych do niej ponad nią, co rozwiązuje problem hoistingu oraz dzieczinonego scope w niektórych przypadkach, co w ES 2017 działa nieco inaczej, ponieważ mamy dostępny scope blokowy i w zasadzie zapomnij o clousure.

Czy to powie
  • Odpowiedz
Czy to powie coś newbie?


@npsr: nie zrozumiales. Zeby wytlumaczyc to newbie musisz wytlumaczyc tez wszystko po kolei czego uzyles do tlumaczenia tej definicji. Czyli lecisz z self-invoking i czym sie rozni od tego w innych jezykach. Do tego dorzucach pojecia takie jak hoisting, counter, dziedziczony scope i wiele innych. Przeciez tlumaczenie polega na tym zeby wytlumaczyc od poczatku do konca a nie tylko ten jeden termin. To co ty
  • Odpowiedz
@npsr nim przejdziesz do tego czym jest closure upewnij się, że koleś kuma:
a/ jak działa zasięg zmiennych w JSie
b/ czym jest "this" (context) w JSie i czy rozumie, że może być zmienny w runtime (bind/call/apply).

Potem wystarczy: Closure to funkcja która tworzy swój scope (zadeklarowane w closure zmienne nie są widoczne poza closure) jednocześnie zachowując dostęp do zewnętrznego scope (zatem może modyfikować zmienne z zewnątrz przez referencje).
  • Odpowiedz
@karer: no właśnie to przeszedłem i chciałem clousure ubrać ładnie w słowa i ...
@nappy:

Potem wystarczy: Closure to funkcja która tworzy swój scope (zadeklarowane w closure zmienne nie są widoczne poza closure) jednocześnie zachowując dostęp do zewnętrznego scope (zatem może modyfikować zmienne z zewnątrz przez referencje).


Właśnie o takie ubranie w słowa mi chodziło. Potem się pokaże na przykładzie
  • Odpowiedz