Interval.cz přinesl již článek úvod do proměnných, který přinesl naprosté základy o proměnných v JavaScriptu. Tento článek navazuje jmény proměnných a související problematikou. Tento článek je určen zejména pro začátečníky, ale může přinést informace i středně pokročilým v JavaScriptu.

Jak vytvořit správně název proměnné

Mnozí z vás si možná řeknou, co vlastně je možné na jménech proměnných vymyslet. Proč vlastně věnovat tomuto tématu celý samostatný článek? Zkrátka proto, že problematika názvů jmen skrývá dost zajímavých zákoutí, abychom si s ní mohli pohrát. Navíc je tato oblast podceňována a mnoho lidí zde trochu tápe.

Začněme tím, jaké vlastně musí být jméno proměnné. Jméno totiž nemůže zvolit ledajaké, jsou na něj kladena některá omezení. Mnoho čtenářů Intervalu mi píše o pomoc s nechodícím JavaScriptem právě díky špatně zvolenému jménu proměnné. Takže pro pojmenování smíte použít pouze znaky anglické abecedy, číslice, speciální znak podtržítko _ a nic jiného. Název proměnné tedy nesmí obsahovat mezeru, pomlčku, ani žádné české písmeno s háčkem, nebo čárkou. Další omezení je, že název nesmí začínat číslicí.

Zde je příklad správně i špatně vytvořených názvů proměnných: Správně je třeba ahoj, x123, pocet_oken, _stul, rada32. Špatné a nepřípustné názvy jsou třeba 1rada (název nesmí začínat číslicí), počet (název nemůže obsahovat č, protože není v anglické abecedě). Je potřeba si uvědomit, že ne vždy vás JavaScript upozorní na chybu ve špatném názvu proměnné. Například pokud proměnnou pojmenujete třeba a%3, je dost pravděpodobné, že JavaScript se bude tvářit spokojeně až na to, že vše bude pracovat jinak, než má.

Dále je potřeba vědět, že JavaScript je, jak se říká „case sensitive“. Znamená to, že je citlivý na velká a malá písmena v názvech proměnných. Proměnné ahoj a Ahoj považuje za dvě různé proměnné. Pozor na to, můžete zde snadno udělat chybu, pokud se překlepnete.

Globální a lokální proměnné

Do této chvíle jsem tvrdil, že každá proměnná, která představuje jakýsi šuplík na nějakou hodnotu, je jednoznačně určena svým jménem. Tedy, pokud vytvořím proměnnou s názvem ahoj a uložím do ní nějakou hodnotu, potom mohu tuto hodnotu kdykoli znovu přečíst tím, že se zeptám, co je uloženo v proměnné ahoj.

Prakticky ve valné většině případů můžete spoléhat na jednoznačnost jména proměnné. Ale JavaScript má „více hromad“, kam si ukládá proměnné, a každá taková „hromada“ si spravuje svoje názvy proměnných.

Tyto „hromady“, na které se ukládají proměnné, se od sebe vzájemně odlišují ve více aspektech. Některé spravují velkou spoustu proměnných, jiné jenom pár. Některé existují trvale, zatímco jiné mají doslova jepičí život a existují jenom na chvilku. Dále se liší také tím, komu je dovoleno s „hromadou“ pracovat.

Jaké tedy existují „hromady“ na ukládání proměnných v JavaScriptu? Nejzákladnější „hromadou“ je místo, kde se ukládají tzv. globální proměnné. Globální proměnné jsou takové, které existují po celou dobu prohlížení HTML stránky. S globálními proměnnými může pracovat jakákoli část JavaScriptu. Krátce řečeno, jsou všude vidět, všem k dispozici a existují trvale, přesněji, tak dlouho, dokud je stránka natáhnutá v prohlížeči.

Naproti tomu existují také tzv. lokální proměnné. Tímto názvem se označují proměnné, které nejsou k dispozici všem částem JavaScriptu v HTML stránce, ale jenom malému kousku JavaScriptu. Stejně tak lokální proměnné většinou přežijí jenom po krátký čas, pak zanikají.

Jak se od sebe liší globální a lokální proměnné? Jak poznáme, jestli naše proměnná patří do prvního, nebo druhého druhu? Je nutné se podívat, kde daná proměnná byla vytvořena. Pokud byla vytvořena uvnitř nějaké funkce (funkce začíná slovem function), jedná se o lokální proměnnou. Pokud mimo funkci, jde o globální proměnnou:

<html>
<head>
<title>Globální a lokální proměnné</title>
</head>
<body>
<script type="text/javascript" language="JavaScript"><!–
var x = 6; // Vytvořena globální proměnná s názvem x.
function moje_funkce() // začátek funkce
{
var ahoj = 3; // Vytvořena lokální proměnná s názvem ahoj.
alert(ahoj); // Výpis lokální proměnné ahoj.
alert(x); // Výpis globální proměnné x.
} // konec funkce
alert(x); // Výpis globální proměnné x.
alert(ahoj); // Pokus o výpis lokální proměnné ahoj.
// Pokus o výpis lokální proměnné by měl skončit chybou.
// –>
</script>
</body>
</html>

Na výše uvedeném příkladě je v komentářích názorně uvedeno, jak se pozná globální a lokální proměnná. Jak je naznačeno, globální proměnné je možné vypsat kdekoli, jak uvnitř funkce, tak i mimo. Zatímco lokální proměnná nemá smysl mimo funkci, kde vznikla. Lokální proměnná automaticky zaniká přesně ke konci funkce, kde byla založena.

Rozdělení proměnných na globální a lokální má svůj důsledek také na pojmenovávání proměnných. Každá z těchto „hromad“ má svůj prostor pro jména. Tedy může existovat globální proměnná nazvaná třeba x a lokální proměnná nazvaná také x, a přitom jsou to dvě různé proměnné! Lze to vyzkoušet třeba zde:

<html>
<head>
<title>Globální a lokální proměnné</title>
</head>
<body>
<script type="text/javascript" language="JavaScript"><!–
var x = 1; // Vytvořena globální proměnná s názvem x.
function moje_funkce() // začátek funkce
{
var x = 3; // Vytvořena lokální proměnná s názvem x.
alert(x); // Výpis lokální proměnné x.
} // konec funkce
alert(x); // Výpis globální proměnné x.
moje_funkce(); // Proveď příkazy ve funkci moje_funkce.
// –>
</script>
</body>
</html>

Pokus si výše uvedený příklad spustíte, zjistíte, že proměnná x uvnitř funkce vypisuje hodnotu 3 a proměnná x mimo funkci vypisuje hodnotu 1. Jsou to dvě různé, na sobě nezávislé proměnné, které mají sice stejné jméno, ale každá leží na jiné „hromadě“.

A to je pro dnešek vše.

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Žádný příspěvek v diskuzi

Odpovědět