Одноименные параметры в JavaScript

Пусть теперь внешняя и внутренняя функция имеют одноименные параметры:

javascriptfunction test(num) {
  function func(num) {
    console.log(num); // выведет 1
  }
  
  func(num);
};

test(1);

В этом случае во внутренней функции будет локальная переменная num. Ее изменение во внутренней функции никак не будет влиять на внешнюю переменную num:

javascriptfunction test(num) {
  function func(num) {
    num = 2; // меняем локальную переменную num
  }
  
  func(num);
  console.log(num); // выведет 1 - ничего не поменялось
}

test(1);

Получится, что внутренняя функция никак не сможет обратиться к внешней переменной num для того, чтобы изменить ее:

javascriptfunction test(num) {
  function func(num) {
    // тут нельзя получить доступ в внешней переменной num
  }
  
  func(num);
}
test(1);
Задание 1

Определите, не запуская код, что выведется в консоль:

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

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

Определите, не запуская код, что выведется в консоль:

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

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

Определите, не запуская код, что выведется в консоль:

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

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

Определите, не запуская код, что выведется в консоль:

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

test(1);