Return to Video

Local and Global Variables (Video Version)

  • 0:01 - 0:03
    Nyní, když jste zvládli
    základy funkcí,
  • 0:03 - 0:07
    budeme mluvit o tématu,
    které může být trochu složitější.
  • 0:07 - 0:11
    Tím tématem je rozdíl mezi
    lokální a globální proměnnou.
  • 0:11 - 0:14
    Tyto výrazy vám asi
    teď nic neříkají.
  • 0:14 - 0:16
    Začněme tedy příkladem.
  • 0:16 - 0:18
    Udělala jsem program,
    abych ukázala,
  • 0:18 - 0:20
    o kolik palců jsem vyrostla
    během mého dětství.
  • 0:21 - 0:22
    Lidé rostou různým tempem,
  • 0:22 - 0:24
    proto jsem vytvořila
    funkci nazvanou calcInches.
  • 0:24 - 0:27
    Tato funkce má parametry
    startAge, endAge a inchesPerYear.
  • 0:27 - 0:30
    Tedy počáteční a konečný
    věk a přírůstek za rok.
  • 0:30 - 0:31
    Funkce by měla spočítat,
  • 0:31 - 0:35
    o kolik palců jsem celkem
    v určité době vyrostla.
  • 0:35 - 0:37
    Nakonec vrátí hodnotu
    každému, kdo ji zavolá.
  • 0:37 - 0:40
    Takže zde můžete vidět
    období od 0 do 8 let.
  • 0:40 - 0:44
    Zavoláme funkci calcInches
    s hodnotami 0, 8 a 2,5.
  • 0:44 - 0:48
    2,5, protože jsem rostla
    asi 2,5 palce za rok.
  • 0:48 - 0:52
    Funkce tedy provede výpočet
    a vyplivne hodnotu 20.
  • 0:52 - 0:58
    Pak od 8 do 16, zavoláme funkci
    s hodnotami 8 a 16 a pak 2.
  • 0:58 - 1:01
    2, protože jsem moc nerostla,
    a vidíte, že to vyplivne 16.
  • 1:02 - 1:05
    Tohle je hezké, ale teď
    bychom chtěli skutečně zobrazit,
  • 1:05 - 1:08
    o kolik palců jsem vyrostla celkem
    za celé moje dětství.
  • 1:09 - 1:12
    Jak to uděláme?
  • 1:12 - 1:14
    Můžeme začít tím,
    že se podíváme na kód
  • 1:14 - 1:17
    a zapřemýšlíme se nad tím:
    „Jaké hodnoty tady máme? “
  • 1:17 - 1:21
    Mám tu nějakou proměnou,
    která představuje celkový počet palců?
  • 1:21 - 1:24
    Uvnitř funkce calcInches máme
    proměnnou totalInches,
  • 1:24 - 1:26
    tedy v češtině "celkový počet palců".
  • 1:26 - 1:31
    Takže bychom to mohli jen vypsat
    a vidět, co to řekne.
  • 1:31 - 1:36
    Napíšeme tedy "text" a v závorkách
    "totalInches, 10 a 200" a dáme to na konec.
  • 1:36 - 1:38
    Co se stane?
  • 1:38 - 1:41
    A jéje zobrazila se nám chybová hláška.
  • 1:41 - 1:46
    Říká, že proměnná
    totalInches není definována.
  • 1:46 - 1:48
    No to je divné,
  • 1:48 - 1:50
    protože jsme přece
    totalInches zde definovali.
  • 1:50 - 1:52
    Zadefinovali jsme to pomocí
    var totalInches rovná se.
  • 1:52 - 1:58
    Problém je, že jsme deklarovali
    totalInches uvnitř funkce.
  • 1:58 - 2:00
    Zde na tomto řádku.
  • 2:00 - 2:02
    A když deklarujeme proměnnou
    uvnitř funkce,
  • 2:02 - 2:04
    tak je považována
    za lokální proměnnou.
  • 2:05 - 2:09
    Žije pouze uvnitř
    funkce, zde v calcInches.
  • 2:09 - 2:16
    A kód, který je mimo tuto funkci,
    nevidí lokální proměnné uvnitř funkcí.
  • 2:16 - 2:18
    Vidí jen to, co se vrátí.
  • 2:18 - 2:22
    Vidí pouze tuto hodnotu,
    ne proměnnou.
  • 2:22 - 2:25
    Takže, když se pokusíme použít totalInches
    mimo danou funkci,
  • 2:25 - 2:26
    tak neví, co to je a říká:
  • 2:26 - 2:29
    „Hej, nikdy dříve jsem
    neviděl tuto proměnnou.
  • 2:29 - 2:31
    Není definována, nemůžu ji zobrazit.“
  • 2:32 - 2:35
    Existuje tedy způsob, jak udělat,
  • 2:35 - 2:37
    aby vnější kód tuto
    proměnnou viděl?
  • 2:37 - 2:42
    Ano je a to tak, že uděláme z
    lokální proměnné globální proměnnou.
  • 2:43 - 2:51
    To můžeme udělat přesunem definice
    mimo funkci, do tvz. globálního rozsahu.
  • 2:51 - 2:54
    Funkce nyní tuto proměnnou
    bude pouze měnit.
  • 2:54 - 2:58
    Není nutné ji znovu definovat.
  • 2:59 - 3:02
    Takže vidíte, že to říká:
    "Celkový růst v průběhu života je 16"
  • 3:03 - 3:06
    Takže našel proměnnou, protože
    jsme z ní udělali globální proměnnou.
  • 3:07 - 3:10
    Ale ve skutečnosti to není hodnota,
    kterou hledáme.
  • 3:10 - 3:12
    Je to jen poslední hodnota.
  • 3:12 - 3:14
    A to proto, že pokaždé,
    když zavoláme tuto funkci,
  • 3:14 - 3:18
    je výsledek totalInches
    jen v určitém období.
  • 3:19 - 3:22
    Takže to, co opravdu chceme, je
    nová proměnná.
  • 3:22 - 3:25
    Tu použijeme jen
    pro uložení celkové hodnoty.
  • 3:25 - 3:29
    Do ní se přidají hodnoty
    vždy, když budeme počítat.
  • 3:29 - 3:33
    Takže to pojďme změnit zpět
    na lokální proměnnou.
  • 3:34 - 3:41
    A vytvořme úplně novou globální proměnnou,
    nazvanou lifeInches a nastavíme ji na 0.
  • 3:41 - 3:44
    A pak uvnitř funkce přidáme tuto
    globální proměnou napsáním:
  • 3:44 - 3:49
    lifeInches plus rovná se totalInches.
  • 3:49 - 3:52
    Kdykoli tedy voláme funkci,
  • 3:52 - 3:56
    přičte se nová hodnota
    k globální proměnné lifeInches.
  • 3:56 - 3:59
    A potom dole zobrazíme lifeInches
    napsáním:
  • 3:59 - 4:01
    text(lifeInches, 10, 200).
  • 4:01 - 4:04
    Tada! Vidíme náš celkový
    růst v průběhu života.
  • 4:04 - 4:06
    Teď to vlastně není tak vysoké číslo.
  • 4:06 - 4:11
    Jsem vyšší než to,
    protože se rodíme s více než 0.
  • 4:11 - 4:14
    Takže pokud chceme celkový počet,
    možná bychom mohli začít ve 20.
  • 4:14 - 4:17
    Tohle už udává,
    jak jsem vysoká měřeno v palcích.
  • 4:17 - 4:20
    Pojďme si to shrnout.
    totalInches je to,
  • 4:20 - 4:22
    čemu říkáme lokální proměnná.
  • 4:22 - 4:28
    Víme to, protože vidíme její zavedení
    uvnitř funkce a ne mimo funkci.
  • 4:29 - 4:31
    A to znamená, že
    tento vnější kód zde,
  • 4:31 - 4:34
    neví o této proměnné
    nazvané totalInches.
  • 4:35 - 4:38
    Proměnnou lifeInches nazýváme
    globální proměnnou.
  • 4:38 - 4:41
    Deklarovali jsme ji
    totiž mimo funkci.
  • 4:41 - 4:44
    Tedy v našem globálním rozsahu.
  • 4:44 - 4:47
    Zkuste na to myslet, když píšete
    své funkce a proměnné.
  • 4:47 - 4:49
    Promyslete si,
  • 4:49 - 4:51
    jestli chcete lokální proměnné
    pouze pro danou funkci
  • 4:51 - 4:55
    nebo globální proměnné
    pro celý program.
  • 4:55 - 4:57
    Nebojte se, pokud je to těžké
    a jdeme vám hlava kolem.
  • 4:57 - 5:00
    Je to jeden z nejsložitějších
    konceptů v programování.
  • 5:00 - 5:02
    Zejména v JavaScriptu.
  • 5:02 - 5:06
    A je to něco, v čem se
    postupně procvičováním zlepšíte
Title:
Local and Global Variables (Video Version)
Description:

more » « less
Video Language:
English
Duration:
05:06

Czech subtitles

Revisions