Je promÄnná viditelná?
Jaký bude výsledek tohoto kódu?
let x = 1;
function funkce() {
console.log(x); // ?
let x = 2;
}
funkce();
P.S. V tomto úkolu je chyták. ÅeÅ¡enà nenà oÄividné.
Výsledek bude: chyba.
Zkuste si to spustit:
let x = 1;
function funkce() {
console.log(x); // ReferenceError: Nelze pÅistupovat k 'x' pÅed inicializacÃ
let x = 2;
}
funkce();
V tomto pÅÃkladu můžeme vidÄt pozoruhodný rozdÃl mezi âneexistujÃcÃâ a âneinicializovanouâ promÄnnou.
Jak jste si mohli pÅeÄÃst v Älánku Oblast platnosti promÄnné, uzávÄr, promÄnná zaÄÃná v âneinicializovanémâ stavu ve chvÃli, kdy bÄh vstoupà do kódového bloku (nebo do funkce). A zůstane neinicializovaná až do pÅÃsluÅ¡ného pÅÃkazu let.
Jinými slovy, pÅed let promÄnná technicky existuje, ale nemůže být použÃvána.
Uvedený kód to demonstruje.
function funkce() {
// motor zná lokálnà promÄnnou x od zaÄátku této funkce,
// ale ta je âneinicializovanáâ (nepoužitelná) až do pÅÃkazu let (âmrtvá zónaâ)
// proto chyba
console.log(x); // ReferenceError: Nelze pÅistupovat k 'x' pÅed inicializacÃ
let x = 2;
}
Tato zóna doÄasné nepoužitelnosti promÄnné (od zaÄátku kódového bloku do let) se nÄkdy nazývá âmrtvá zónaâ.