Wpis z mikrobloga

#javascript

wg ksiazki jest tak :

>> function f1(){var a = 1; f2();}

>> function f2(){return a;}

>> f1();

a is not defined

>> var a = 5;

>> f1();

5

>> a = 55;

>> f1();

55

>> delete a;

true

>> f1();

a is not defined

, przepisalem, ale nic sie takiego nie dzieje jak w tej ksiazce:

function f1(){var a = 1; f2();}
function f2(){return a;}
f1();
var a = 5; // To jest zmienna globalna tak ?
function f1(){var a = 1; f2();}
function f2(){return a;} // wiec jak f1 wywola f2, to f2 mialoby wyswietlic globalne var a czyli 5, a tak sie nie dzieje
f1();

:/ nic juz z tego nie rozumiem
  • 13
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@gregu-: nie bardzo wiem o co ci chodzi, ale jeżeli deklarujesz zmienną w funkcji (w bloku) to jest to zmienna lokalna dostępna tylko dla tej funkcji.
funcja f2 nie jest deklarowana w funkcji f1, liczy się miejsce deklaracji a nie miejsce wywołania. Funkcja f1 nie ma dostępu do zmiennej var a
Jeżeli funcję f2 zadeklarujesz w funkcji f1 dopiero wtedy będzie miała dostęp do zmiennej lokalnej var a = 1;
  • Odpowiedz
@gregu-: f2 wykonuje się i zwraca 5. Tylko że f1 w żaden sposób tego nie pokazuje.

Możesz powiedzieć f1 aby zwróciła to co zwraca f2, return f2();

Albo zmienić f2 tak aby wypisywała wartość a do konsoli.
  • Odpowiedz
function f1(){var a = 1; f2();} -> taki zapis nie powoduje wywolania f2?


@gregu-: powoduje. Wywołuje się, zwraca wewnątrz 'f1' wartość 'a' i nic z tym się nie dzieje :)
  • Odpowiedz
@gregu-: Może mieli jakąś inną konsolę ;D Albo tylko podglądali wartość a aby ci pokazać jak to działa.

var a = 5;
function f1(){
var a = 1;
var wynikDrugiejFunkcji
  • Odpowiedz
@dieow: wroce do tego jutro, na dzisiaj mozg mi spuchl, czytalem o domknieciach i tak sie zgubilem ze nie wiem gdzie jest kuchnia i bede glodowal w nocy ;) A tak na serio, dzieki ogromne za pomoc. Jutro bedzie kontynuuacja nauki. Dzisiaj jeszcze troche obiekty przerobilem, jak zrobic prosty obiekt, i this i wciskac tam propsy i methody. im gonna call it a day :/
  • Odpowiedz