Совпадение имен с параметрами в JavaScript

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

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

let num = 1;
func(num);

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

javascriptfunction func(num) {
  num = 2; // меняем локальную переменную
}

let num = 1;
func(num);
console.log(num); // выведет 1 - ничего не поменялось
Задание 1

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

javascriptfunction func(num) {
  num = 2;
}

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

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

javascriptfunction func() {
  num = 2;
}

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

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

javascriptfunction func() {
  let num = 2;
}

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