[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.76,0:00:03.07,Default,,0000,0000,0000,,Nyní, když jste zvládli\Nzáklady funkcí, Dialogue: 0,0:00:03.07,0:00:07.40,Default,,0000,0000,0000,,budeme mluvit o tématu,\Nkteré může být trochu složitější. Dialogue: 0,0:00:07.40,0:00:10.98,Default,,0000,0000,0000,,Tím tématem je rozdíl mezi\Nlokální a globální proměnnou. Dialogue: 0,0:00:11.37,0:00:14.18,Default,,0000,0000,0000,,Tyto výrazy vám asi \Nteď nic neříkají. Dialogue: 0,0:00:14.18,0:00:16.36,Default,,0000,0000,0000,,Začněme tedy příkladem. Dialogue: 0,0:00:16.36,0:00:18.11,Default,,0000,0000,0000,,Udělala jsem program, \Nabych ukázala, Dialogue: 0,0:00:18.11,0:00:20.35,Default,,0000,0000,0000,,o kolik palců jsem vyrostla \Nběhem mého dětství. Dialogue: 0,0:00:20.51,0:00:22.09,Default,,0000,0000,0000,,Lidé rostou různým tempem, Dialogue: 0,0:00:22.09,0:00:24.46,Default,,0000,0000,0000,,proto jsem vytvořila \Nfunkci nazvanou calcInches. Dialogue: 0,0:00:24.46,0:00:27.43,Default,,0000,0000,0000,,Tato funkce má parametry\NstartAge, endAge a inchesPerYear. Dialogue: 0,0:00:27.43,0:00:29.70,Default,,0000,0000,0000,,Tedy počáteční a konečný\Nvěk a přírůstek za rok. Dialogue: 0,0:00:29.70,0:00:31.43,Default,,0000,0000,0000,,Funkce by měla spočítat, Dialogue: 0,0:00:31.43,0:00:34.87,Default,,0000,0000,0000,,o kolik palců jsem celkem\Nv určité době vyrostla. Dialogue: 0,0:00:34.87,0:00:37.36,Default,,0000,0000,0000,,Nakonec vrátí hodnotu\Nkaždému, kdo ji zavolá. Dialogue: 0,0:00:37.36,0:00:40.09,Default,,0000,0000,0000,,Takže zde můžete vidět \Nobdobí od 0 do 8 let. Dialogue: 0,0:00:40.09,0:00:44.35,Default,,0000,0000,0000,,Zavoláme funkci calcInches\Ns hodnotami 0, 8 a 2,5. Dialogue: 0,0:00:44.35,0:00:47.72,Default,,0000,0000,0000,,2,5, protože jsem rostla \Nasi 2,5 palce za rok. Dialogue: 0,0:00:48.30,0:00:51.90,Default,,0000,0000,0000,,Funkce tedy provede výpočet\Na vyplivne hodnotu 20. Dialogue: 0,0:00:52.17,0:00:57.94,Default,,0000,0000,0000,,Pak od 8 do 16, zavoláme funkci\Ns hodnotami 8 a 16 a pak 2. Dialogue: 0,0:00:57.94,0:01:01.13,Default,,0000,0000,0000,,2, protože jsem moc nerostla,\Na vidíte, že to vyplivne 16. Dialogue: 0,0:01:01.91,0:01:05.31,Default,,0000,0000,0000,,Tohle je hezké, ale teď \Nbychom chtěli skutečně zobrazit, Dialogue: 0,0:01:05.31,0:01:08.07,Default,,0000,0000,0000,,o kolik palců jsem vyrostla celkem\Nza celé moje dětství. Dialogue: 0,0:01:08.77,0:01:11.70,Default,,0000,0000,0000,,Jak to uděláme? Dialogue: 0,0:01:11.70,0:01:13.100,Default,,0000,0000,0000,,Můžeme začít tím,\Nže se podíváme na kód Dialogue: 0,0:01:13.100,0:01:17.04,Default,,0000,0000,0000,,a zapřemýšlíme se nad tím:\N„Jaké hodnoty tady máme? “ Dialogue: 0,0:01:17.04,0:01:20.58,Default,,0000,0000,0000,,Mám tu nějakou proměnou,\Nkterá představuje celkový počet palců? Dialogue: 0,0:01:20.58,0:01:24.10,Default,,0000,0000,0000,,Uvnitř funkce calcInches máme\Nproměnnou totalInches, Dialogue: 0,0:01:24.10,0:01:26.04,Default,,0000,0000,0000,,tedy v češtině "celkový počet palců". Dialogue: 0,0:01:26.04,0:01:30.56,Default,,0000,0000,0000,,Takže bychom to mohli jen vypsat\Na vidět, co to řekne. Dialogue: 0,0:01:30.56,0:01:36.44,Default,,0000,0000,0000,,Napíšeme tedy "text" a v závorkách\N"totalInches, 10 a 200" a dáme to na konec. Dialogue: 0,0:01:36.44,0:01:37.90,Default,,0000,0000,0000,,Co se stane? Dialogue: 0,0:01:37.90,0:01:40.94,Default,,0000,0000,0000,,A jéje zobrazila se nám chybová hláška. Dialogue: 0,0:01:40.94,0:01:45.56,Default,,0000,0000,0000,,Říká, že proměnná\NtotalInches není definována. Dialogue: 0,0:01:45.56,0:01:47.62,Default,,0000,0000,0000,,No to je divné, Dialogue: 0,0:01:47.62,0:01:49.96,Default,,0000,0000,0000,,protože jsme přece\NtotalInches zde definovali. Dialogue: 0,0:01:49.96,0:01:52.49,Default,,0000,0000,0000,,Zadefinovali jsme to pomocí \Nvar totalInches rovná se. Dialogue: 0,0:01:52.49,0:01:58.14,Default,,0000,0000,0000,,Problém je, že jsme deklarovali\NtotalInches uvnitř funkce. Dialogue: 0,0:01:58.14,0:01:59.59,Default,,0000,0000,0000,,Zde na tomto řádku. Dialogue: 0,0:01:59.59,0:02:01.85,Default,,0000,0000,0000,,A když deklarujeme proměnnou\Nuvnitř funkce, Dialogue: 0,0:02:01.85,0:02:04.31,Default,,0000,0000,0000,,tak je považována\Nza lokální proměnnou. Dialogue: 0,0:02:05.23,0:02:09.08,Default,,0000,0000,0000,,Žije pouze uvnitř\Nfunkce, zde v calcInches. Dialogue: 0,0:02:09.08,0:02:15.79,Default,,0000,0000,0000,,A kód, který je mimo tuto funkci,\Nnevidí lokální proměnné uvnitř funkcí. Dialogue: 0,0:02:15.79,0:02:18.19,Default,,0000,0000,0000,,Vidí jen to, co se vrátí. Dialogue: 0,0:02:18.19,0:02:21.80,Default,,0000,0000,0000,,Vidí pouze tuto hodnotu,\Nne proměnnou. Dialogue: 0,0:02:21.80,0:02:24.77,Default,,0000,0000,0000,,Takže, když se pokusíme použít totalInches\Nmimo danou funkci, Dialogue: 0,0:02:24.77,0:02:26.25,Default,,0000,0000,0000,,tak neví, co to je a říká: Dialogue: 0,0:02:26.25,0:02:28.60,Default,,0000,0000,0000,,„Hej, nikdy dříve jsem\Nneviděl tuto proměnnou. Dialogue: 0,0:02:28.60,0:02:31.07,Default,,0000,0000,0000,,Není definována, nemůžu ji zobrazit.“ Dialogue: 0,0:02:32.20,0:02:34.61,Default,,0000,0000,0000,,Existuje tedy způsob, jak udělat, Dialogue: 0,0:02:34.61,0:02:37.20,Default,,0000,0000,0000,,aby vnější kód tuto\Nproměnnou viděl? Dialogue: 0,0:02:37.40,0:02:42.49,Default,,0000,0000,0000,,Ano je a to tak, že uděláme z \Nlokální proměnné globální proměnnou. Dialogue: 0,0:02:42.74,0:02:50.88,Default,,0000,0000,0000,,To můžeme udělat přesunem definice\Nmimo funkci, do tvz. globálního rozsahu. Dialogue: 0,0:02:51.23,0:02:54.32,Default,,0000,0000,0000,,Funkce nyní tuto proměnnou\Nbude pouze měnit. Dialogue: 0,0:02:54.32,0:02:58.34,Default,,0000,0000,0000,,Není nutné ji znovu definovat. Dialogue: 0,0:02:58.63,0:03:02.48,Default,,0000,0000,0000,,Takže vidíte, že to říká:\N"Celkový růst v průběhu života je 16" Dialogue: 0,0:03:02.76,0:03:06.16,Default,,0000,0000,0000,,Takže našel proměnnou, protože\Njsme z ní udělali globální proměnnou. Dialogue: 0,0:03:06.65,0:03:09.52,Default,,0000,0000,0000,,Ale ve skutečnosti to není hodnota,\Nkterou hledáme. Dialogue: 0,0:03:09.62,0:03:11.55,Default,,0000,0000,0000,,Je to jen poslední hodnota. Dialogue: 0,0:03:11.55,0:03:13.94,Default,,0000,0000,0000,,A to proto, že pokaždé,\Nkdyž zavoláme tuto funkci, Dialogue: 0,0:03:13.94,0:03:17.79,Default,,0000,0000,0000,,je výsledek totalInches \Njen v určitém období. Dialogue: 0,0:03:18.71,0:03:21.93,Default,,0000,0000,0000,,Takže to, co opravdu chceme, je\Nnová proměnná. Dialogue: 0,0:03:21.93,0:03:24.66,Default,,0000,0000,0000,,Tu použijeme jen\Npro uložení celkové hodnoty. Dialogue: 0,0:03:24.66,0:03:29.23,Default,,0000,0000,0000,,Do ní se přidají hodnoty\Nvždy, když budeme počítat. Dialogue: 0,0:03:29.23,0:03:32.56,Default,,0000,0000,0000,,Takže to pojďme změnit zpět\Nna lokální proměnnou. Dialogue: 0,0:03:33.66,0:03:40.63,Default,,0000,0000,0000,,A vytvořme úplně novou globální proměnnou,\Nnazvanou lifeInches a nastavíme ji na 0. Dialogue: 0,0:03:40.63,0:03:43.88,Default,,0000,0000,0000,,A pak uvnitř funkce přidáme tuto\Nglobální proměnou napsáním: Dialogue: 0,0:03:43.88,0:03:49.48,Default,,0000,0000,0000,,lifeInches plus rovná se totalInches. Dialogue: 0,0:03:49.48,0:03:51.59,Default,,0000,0000,0000,,Kdykoli tedy voláme funkci, Dialogue: 0,0:03:51.59,0:03:56.40,Default,,0000,0000,0000,,přičte se nová hodnota\Nk globální proměnné lifeInches. Dialogue: 0,0:03:56.40,0:03:58.97,Default,,0000,0000,0000,,A potom dole zobrazíme lifeInches\Nnapsáním: Dialogue: 0,0:03:58.97,0:04:01.30,Default,,0000,0000,0000,,text(lifeInches, 10, 200). Dialogue: 0,0:04:01.30,0:04:03.54,Default,,0000,0000,0000,,Tada! Vidíme náš celkový\Nrůst v průběhu života. Dialogue: 0,0:04:03.54,0:04:06.43,Default,,0000,0000,0000,,Teď to vlastně není tak vysoké číslo. Dialogue: 0,0:04:06.43,0:04:10.84,Default,,0000,0000,0000,,Jsem vyšší než to,\Nprotože se rodíme s více než 0. Dialogue: 0,0:04:10.84,0:04:13.98,Default,,0000,0000,0000,,Takže pokud chceme celkový počet,\Nmožná bychom mohli začít ve 20. Dialogue: 0,0:04:14.28,0:04:17.26,Default,,0000,0000,0000,,Tohle už udává,\Njak jsem vysoká měřeno v palcích. Dialogue: 0,0:04:17.26,0:04:20.04,Default,,0000,0000,0000,,Pojďme si to shrnout. \NtotalInches je to, Dialogue: 0,0:04:20.04,0:04:22.16,Default,,0000,0000,0000,,čemu říkáme lokální proměnná. Dialogue: 0,0:04:22.16,0:04:27.61,Default,,0000,0000,0000,,Víme to, protože vidíme její zavedení\Nuvnitř funkce a ne mimo funkci. Dialogue: 0,0:04:28.52,0:04:30.82,Default,,0000,0000,0000,,A to znamená, že\Ntento vnější kód zde, Dialogue: 0,0:04:30.82,0:04:34.37,Default,,0000,0000,0000,,neví o této proměnné\Nnazvané totalInches. Dialogue: 0,0:04:34.81,0:04:37.66,Default,,0000,0000,0000,,Proměnnou lifeInches nazýváme\Nglobální proměnnou. Dialogue: 0,0:04:37.66,0:04:41.30,Default,,0000,0000,0000,,Deklarovali jsme ji\Ntotiž mimo funkci. Dialogue: 0,0:04:41.30,0:04:43.59,Default,,0000,0000,0000,,Tedy v našem globálním rozsahu. Dialogue: 0,0:04:43.59,0:04:46.98,Default,,0000,0000,0000,,Zkuste na to myslet, když píšete\Nsvé funkce a proměnné. Dialogue: 0,0:04:47.16,0:04:48.83,Default,,0000,0000,0000,,Promyslete si, Dialogue: 0,0:04:48.83,0:04:51.31,Default,,0000,0000,0000,,jestli chcete lokální proměnné\Npouze pro danou funkci Dialogue: 0,0:04:51.31,0:04:54.65,Default,,0000,0000,0000,,nebo globální proměnné\Npro celý program. Dialogue: 0,0:04:54.65,0:04:57.35,Default,,0000,0000,0000,,Nebojte se, pokud je to těžké\Na jdeme vám hlava kolem. Dialogue: 0,0:04:57.35,0:04:59.93,Default,,0000,0000,0000,,Je to jeden z nejsložitějších\Nkonceptů v programování. Dialogue: 0,0:04:59.93,0:05:01.73,Default,,0000,0000,0000,,Zejména v JavaScriptu. Dialogue: 0,0:05:01.73,0:05:06.00,Default,,0000,0000,0000,,A je to něco, v čem se\Npostupně procvičováním zlepšíte