Обхват на вложени функции в 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();