Опсег на видливост на вгнездени функции во 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();