Едноименни параметри в 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);