ďťż

[JS] zmienne globalne

       

Podstrony


telcocafe

Mam taki oto problem który dosyć mnie zaskoczył

Deklaruje sobie zmienną globalną w pliku *.js oraz mam dwie funkcje. funkcja1() i funkcja2(). Z funkcji1 wywoluje funkcje2() ktora to zmienia wartosc zmiennej globalnej. I co sie okazalo ze funkcja1() nie widzi przypisanej wartosci do zmiennej globalnej przez funkcje2.

var zmienna; function funkcja1() { .... var wynik = funkcja2(); if (zmienna==true) alert('Dobrze'); <---------------------- tutaj nie rozpoznaje wartosci true dla zmiennej globalnej else alert('Zle'); ... } function funkcja2() { .... zmienna=true; return wynik }

Ale co najlepsze jesli dodam w funkcja1() alert("jakis tekst"); przed wywolaniem if'a to rozpoznaje prawidłowo jako true.

.... alert("Jakis tekst"); if (zmienna==true) alert('Dobrze'); ...

Ktoś wie co jest grane ? Bo ja zwątpiłem po czymś takim.



Mi się wydaje, że Twój błąd polega na tym, że w drugiej funkcji przypisujesz wartość "true" do zmiennej lokalnej, a nie do tej globalnej :-/

//

global zmienna; zmienna = true;

Nie powinno być przypadkiem jakoś tak?
Użytkownik Capellini edytował ten post 31 lipiec 2007, 09:54

Mi się wydaje, że Twój błąd polega na tym, że w drugiej funkcji przypisujesz wartość "true" do zmiennej lokalnej, a nie do tej globalnej :-/

//

global zmienna; zmienna = true;

Nie powinno być przypadkiem jakoś tak?


Hmm nom niestety jak dopisze global w funkcji2() to w ogole sie skrypt nie wywoluje. Raczej to nie jest problem bo jak dam wczesniej tego alerta to rozpoznaje dobrze wartosc przypisana, czyli przypisuje do zmiennej globalnej a nie lokalnej.
Ale dzięki za zainteresowanie :)

Przypisz zmiennej jakąś wartość początkową by rozpoznało typ zmiennejvar zmienna = false;@Capellini:
To nie PHP by było global :P
Polecam lekturę.




To nie PHP by było global tongue.gif

Wiem, wiem, ale właśnie dlatego napisałem "jakoś tak", a nie po prostu "tak" bo chciałem tylko pokazać, o co mi chodzi.

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.