Stejné názvy proměnných ve funkcích v JavaScriptu
Nechť je jak mimo funkci, tak uvnitř proměnná
num. V tomto případě jakékoli změny
s lokální proměnnou num nijak
neovlivní globální proměnnou num:
let num = 1; // globální proměnná
function func() {
let num = 2; // lokální proměnná
console.log(num);
}
func(); // voláme funkci, vypíše 2
console.log(num); // vypíše 1 - globální proměnná se nezměnila
Ale pokud zapomeneme deklarovat lokální proměnnou
num pomocí let, pak uvnitř funkce
se nevytvoří lokální proměnná num,
ale pouze se změní globální proměnná:
let num = 1;
function func() {
num = 2; // zapomněli jsme napsat let - měníme vnější proměnnou
console.log(num);
}
func(); // voláme funkci, vypíše 2
console.log(num); // vypíše 2 - proměnná se změnila
Zde mohou nastat dvě situace: buď jsme skutečně
chtěli změnit globální proměnnou (pak je
vše v pořádku), nebo jsme zapomněli let a náhodně
změnili globální proměnnou.
Druhý případ je těžko zachytitelnou chybou,
vedoucí k nepředvídatelnému chování skriptu.
Proto vždy, když zavádíte novou proměnnou, deklarujte
ji pomocí let.
Určete, bez spuštění kódu, co se vypíše do konzole:
let num = 1;
function func() {
num = 2;
}
func();
console.log(num);
Určete, bez spuštění kódu, co se vypíše do konzole:
let num = 1;
function func() {
let num = 2;
}
func();
console.log(num);