Globální proměnné a parametry funkcí v JavaScriptu

Předpokládejme, že máme funkci, která přijímá jako parametr číslo:

javascriptfunction func(localNum) {
  console.log(localNum);
}

Předpokládejme, že mimo funkci existuje proměnná num:

javascriptfunction func(localNum) {
  console.log(localNum);
}

let num = 1; // vnější globální proměnná

Zavolejme naši funkci a předejme jí proměnnou num jako parametr:

javascriptfunction func(localNum) {
  console.log(localNum);
}

let num = 1;
func(num); // voláme funkci s parametrem, vypíše 1

Výsledkem bude, že uvnitř funkce bude přístupná jak proměnná localNum (parametr funkce), tak proměnná num (jako vnější proměnná):

javascriptfunction func(localNum) {
  console.log(num); // vypíše 1
  console.log(localNum); // vypíše 1
}

let num = 1;
func(num);

Samotná proměnná localNum bude lokální proměnnou funkce a nebude přístupná zvenčí:

javascriptfunction func(localNum) {
  
}

let num = 1;
func(num); // voláme funkci s parametrem
console.log(localNum); // způsobí chybu

Protože je proměnná localNum lokální, žádné její změny uvnitř funkce nic nezmění vně:

javascriptfunction func(localNum) {
  localNum = 2; // nic nemění vně
}

let num = 1;
func(num);

Pokud však uvnitř změníme proměnnou num (globální), změny se projeví i vně:

javascriptfunction func(localNum) {
  num = 2;
}

let num = 1;
func(num);
console.log(num); // vypíše 2

Pokud však uvnitř funkce deklarujeme proměnnou num pomocí let, vytvoříme tím lokální proměnnou num, která nijak neovlivní vnější proměnnou:

javascriptfunction func(localNum) {
  let num = 2; // deklarujeme pomocí let
}

let num = 1;
func(num);
console.log(num); // vypíše 1 - nic se nezměnilo
Задание 1

Určete, bez spuštění kódu, co se vypíše do konzole:

javascriptfunction func(localNum) {
  console.log(localNum);
}

func(1);
Задание 2

Určete, bez spuštění kódu, co se vypíše do konzole:

javascriptfunction func(localNum) {
  console.log(localNum);
}

let num = 1;
func(num);
Задание 3

Určete, bez spuštění kódu, co se vypíše do konzole:

javascriptfunction func(localNum) {
  console.log(localNum);
}

let num = 1;
func(num);
num = 2;
Задание 4

Určete, bez spuštění kódu, co se vypíše do konzole:

javascriptlet num = 1;

function func(localNum) {
  console.log(localNum);
}

num = 2;
func(num);
Задание 5

Určete, bez spuštění kódu, co se vypíše do konzole:

javascriptfunction func(localNum) {
  localNum = 2;
}

let num = 1;
func(num);
console.log(num);
Задание 6

Určete, bez spuštění kódu, co se vypíše do konzole:

javascriptfunction func(localNum) {
  num = 2;
}

let num = 1;
func(num);
console.log(num);
Задание 7

Určete, bez spuštění kódu, co se vypíše do konzole:

javascriptfunction func(localNum) {
  let num = 2;
}

let num = 1;
func(num);
console.log(num);