Parametry se stejným názvem v JavaScriptu

Nyní předpokládejme, že vnější a vnitřní funkce mají parametry se stejným názvem:

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

test(1);

V tomto případě bude ve vnitřní funkci lokální proměnná num. Její změna ve vnitřní funkci nijak neovlivní vnější proměnnou num:

javascriptfunction test(num) {
  function func(num) {
    num = 2; // měníme lokální proměnnou num
  }
  
  func(num);
  console.log(num); // vypíše 1 - nic se nezměnilo
}

test(1);

Výsledkem bude, že vnitřní funkce se nemůže nijak dostat k vnější proměnné num aby ji změnila:

javascriptfunction test(num) {
  function func(num) {
    // zde nelze získat přístup k vnější proměnné num
  }
  
  func(num);
}
test(1);
Задание 1

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

javascriptfunction test(num) {
  function func(num) {
    console.log(num);
  }
  
  func(num);
}

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

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

javascriptfunction test(num) {
  function func(num) {
    num = 2;
  }
  
  func(num);
  console.log(num);
}

test(1);
Задание 3

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

javascriptfunction test(num) {
  function func(num) {
    console.log(num);
  }
  
  num = 2;
  func(num);
}

test(1);
Задание 4

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

javascriptfunction test(num) {
  function func(num) {
    console.log(num);
  }
  
  func(num);
  num = 2;
}

test(1);