Область видимости вложенных функций в JavaScript

Если функция содержит внутри другую функцию - переменные внешней функции видны во внутренней:

javascriptfunction test() {
  let num = 1; // переменная внешней функции
  
  function func() {
    console.log(num); // выведет 1
  }
  
  func(); // вызываем внутреннюю функцию
}

test(); // вызываем внешнюю функцию

Также во внутренней функции будут видны переменные, определенные снаружи внешней функции:

javascriptlet num = 1; // глобальная переменная

function test() {
  function func() {
    console.log(num); // выведет 1
  }
  
  func(); // вызываем внутреннюю функцию
};

test(); // вызываем внешнюю функцию
Задание 1

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

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

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

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

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

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

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

javascriptfunction test() {
  let num = 1;
  
  function func() {
    console.log(num);
  }
  
  func();
}
Задание 4

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

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

test();