Rozsah JavaScriptu
Rozsah určuje dostupnost (viditelnost) proměnných.
JavaScript má 3 typy rozsahu:
- Rozsah bloku
- Rozsah funkcí
- Globální rozsah
Rozsah bloku
Před ES6 (2015) měl JavaScript pouze globální rozsah a rozsah funkcí .
ES6 představil dvě důležitá nová klíčová slova JavaScript: let
a const
.
Tato dvě klíčová slova poskytují v JavaScriptu rozsah bloku .
K proměnným deklarovaným uvnitř bloku { } nelze přistupovat zvenčí bloku:
Příklad
{
let x = 2;
}
// x can NOT be used here
Proměnné deklarované pomocí var
klíčového slova NEMOHOU mít rozsah bloku.
K proměnným deklarovaným uvnitř bloku { } lze přistupovat zvenčí bloku.
Příklad
{
var x = 2;
}
// x CAN be used here
Místní rozsah
Proměnné deklarované v rámci funkce JavaScriptu se stanou pro funkci LOKÁLNÍ .
Příklad
// code here can NOT use carName
function myFunction() {
let carName = "Volvo";
// code here CAN use carName
}
// code here can NOT use carName
Lokální proměnné mají rozsah funkce :
Lze k nim přistupovat pouze z funkce.
Protože lokální proměnné jsou rozpoznávány pouze uvnitř jejich funkcí, lze proměnné se stejným názvem použít v různých funkcích.
Lokální proměnné se vytvářejí při spuštění funkce a vymažou se po dokončení funkce.
Rozsah funkce
JavaScript má rozsah funkcí: Každá funkce vytváří nový rozsah.
Proměnné definované uvnitř funkce nejsou přístupné (viditelné) zvenčí funkce.
Proměnné deklarované pomocí var
, let
a const
jsou velmi podobné, když jsou deklarovány uvnitř funkce.
Všechny mají rozsah funkcí :
function myFunction() {
var carName = "Volvo";
// Function Scope
}
function myFunction() {
let carName = "Volvo"; //
Function Scope
}
function myFunction() {
const carName = "Volvo"; //
Function Scope
}
Globální proměnné JavaScriptu
Proměnná deklarovaná mimo funkci se stává GLOBAL .
Příklad
let carName = "Volvo";
// code here can use carName
function myFunction() {
// code here can also use carName
}
Globální proměnná má globální rozsah :
Mají k ní přístup všechny skripty a funkce na webové stránce.
Globální rozsah
Proměnné deklarované Globálně (mimo jakoukoli funkci) mají globální rozsah .
Ke globálním proměnným lze přistupovat odkudkoli v programu JavaScript.
Proměnné deklarované pomocí var
, let
a const
jsou velmi podobné, když jsou deklarovány mimo blok.
Všechny mají globální rozsah :
var x = 2;
// Global scope
let x = 2; //
Global scope
const x = 2; //
Global scope
Proměnné JavaScriptu
V JavaScriptu jsou objekty a funkce také proměnné.
Rozsah určuje dostupnost proměnných, objektů a funkcí z různých částí kódu.
Automaticky globální
Pokud proměnné přiřadíte hodnotu, která nebyla deklarována, stane se automaticky GLOBÁLNÍ proměnnou.
Tento příklad kódu deklaruje globální proměnnou carName
, i když je hodnota přiřazena uvnitř funkce.
Příklad
myFunction();
// code here can use carName
function myFunction() {
carName = "Volvo";
}
Přísný režim
Všechny moderní prohlížeče podporují spouštění JavaScriptu v „přísném režimu“.
Více o tom, jak používat přísný režim, se dozvíte v pozdější kapitole tohoto tutoriálu.
V "Strict Mode" nejsou nedeklarované proměnné automaticky globální.
Globální proměnné v HTML
U JavaScriptu je globálním rozsahem prostředí JavaScriptu.
V HTML je globálním rozsahem objekt okna.
Globální proměnné definované pomocí var
klíčového slova patří do objektu okna:
Příklad
var carName = "Volvo";
// code here
can use window.carName
Globální proměnné definované pomocí let
klíčového slova nepatří do objektu okna:
Příklad
let carName = "Volvo";
// code here can not use window.carName
Varování
NEVYTVOŘUJTE globální proměnné, pokud to nemáte v úmyslu.
Vaše globální proměnné (nebo funkce) mohou přepsat proměnné okna (nebo funkce).
Jakákoli funkce, včetně objektu okna, může přepsat vaše globální proměnné a funkce.
Životnost proměnných JavaScriptu
Životnost proměnné JavaScriptu začíná, když je deklarována.
Funkční (místní) proměnné se po dokončení funkce vymažou.
Ve webovém prohlížeči se globální proměnné odstraní, když zavřete okno prohlížeče (nebo kartu).
Funkční argumenty
Argumenty funkce (parametry) fungují jako lokální proměnné uvnitř funkcí.