Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> JS Domknięcia i samo zwiększająca się funkcja.
mesmerro
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 1.09.2011

Ostrzeżenie: (0%)
-----


Witam, próbuję załapać domknięcia w JS, o to problemik

Program który będzie wywoływany foo(); będzie "zliczał" ilość wywołań bez użycia zmiennej globalnej ani argumentu w funckji
więc jeśli wywołamy go foo(); foo(); alert(foo()); to da nam 3

i naskrobałem coś takiego
Kod
var increment = function() {
    var i = 0;
    return function() { return i += 1;}();
};

alert(increment()+" "+increment());

(tak wiem, że to się zeruję)

Póki co stoję poetycko to ujmując "jak widływ gnoju".
Wszelkie sugestie mile widziane
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mortus
post
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Podstawą działania takich funkcji jest sposób ustalania początkowej wartości zmiennej (opiszę to dokładniej w kodzie poniżej). Po drugie nie rozumiem, co chcesz osiągnąć zwracając w swojej funkcji wynik działania jakiejś funkcji anonimowej, to raczej nie tędy droga. Problem z domknięciami ma niewiele wspólnego, chodzi tutaj raczej o zasymulowanie zmiennej statycznej w JS.
[JAVASCRIPT] pobierz, plaintext
  1. var increment = function() {
  2. // ustalamy pierwszą wartość naszej zmiennej
  3. // sprawdzając, czy jest niezdefiniowanego typu
  4. // kod jest wykonywany przy pierwszym wywołaniu funkcji increment
  5. if(typeof increment.i == 'undefined') {
  6. increment.i = 0;
  7. }
  8. return ++increment.i;
  9. };
  10. alert(increment()+" "+increment());
[JAVASCRIPT] pobierz, plaintext


@wszerad Nie chodzi o to, że taki zapis funkcję wyzwala, ale chodzi o to, że wewnątrz ciała tej funkcji mamy ograniczony zasięg zmiennych tylko do ciała tej funkcji. Powoduje to, że możemy bezpieczniej używać zmiennych do niej przekazanych.
Takie coś do poczytania, choć to niewiele, jeśli chodzi o domknięcia.

Ten post edytował mortus 1.09.2011, 22:00:33
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.12.2025 - 06:43