Ambito delle funzioni annidate in JavaScript

Se una funzione contiene un'altra funzione al suo interno - le variabili della funzione esterna sono visibili in quella interna:

javascriptfunction test() {
  let num = 1; // variabile della funzione esterna
  
  function func() {
    console.log(num); // stamperà 1
  }
  
  func(); // chiamiamo la funzione interna
}

test(); // chiamiamo la funzione esterna

Inoltre, nella funzione interna saranno visibili le variabili definite all'esterno della funzione esterna:

javascriptlet num = 1; // variabile globale

function test() {
  function func() {
    console.log(num); // stamperà 1
  }
  
  func(); // chiamiamo la funzione interna
};

test(); // chiamiamo la funzione esterna
Задание 1

Determina, senza eseguire il codice, cosa verrà stampato in console:

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

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

Determina, senza eseguire il codice, cosa verrà stampato in console:

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

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

Determina, senza eseguire il codice, cosa verrà stampato in console:

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

Determina, senza eseguire il codice, cosa verrà stampato in console:

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

test();