Parametri delle funzioni esterne e interne in JavaScript

Facciamo in modo che sia la funzione esterna che quella interna accettino parametri:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(localNum);
  }
}

Passiamo il parametro della funzione esterna alla chiamata della funzione interna:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(localNum); // visualizzerà 1
  }
  
  func(num); //!! passiamo il parametro
}

test(1); // passiamo un numero come parametro

Risulta che nella funzione interna sarà disponibile la variabile num come variabile esterna dalla funzione genitore e la variabile localNum, che è una variabile locale della funzione interna.

Entrambe queste variabili avranno gli stessi valori:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(num); // visualizzerà 1
    console.log(localNum); // visualizzerà 1
  }
  
  func(num);
}

test(1);

La differenza tra loro sarà la seguente: se all'interno della funzione interna si modifica la variabile num - essa cambierà anche nella funzione esterna:

javascriptfunction test(num) {
  function func(localNum) {
    num = 2; // modifichiamo la variabile num
  }
  
  func(num);   // passiamo il parametro
  console.log(num);  // visualizzerà 2
}

test(1); // passiamo un numero come parametro

Mentre la variabile localNum sarà locale. Le sue modifiche non porteranno ad alcun cambiamento nella funzione esterna. E inoltre la variabile localNum stessa non sarà visibile dall'esterno della funzione interna:

javascriptfunction test(num) {
  function func(localNum) {
    localNum = 2; // modifichiamo la variabile num
  }
  
  func(num); // passiamo il parametro
}

test(1); // passiamo un numero come parametro
Задание 1

Determinate, senza eseguire il codice, cosa verrà visualizzato in console:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(localNum);
  }
  
  func(num);
}

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

Determinate, senza eseguire il codice, cosa verrà visualizzato in console:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(localNum);
  }
  
  func(num + 1);
}

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

Determinate, senza eseguire il codice, cosa verrà visualizzato in console:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(num);
  }
  
  func(num + 1);
}

test(1);
Задание 4

Determinate, senza eseguire il codice, cosa verrà visualizzato in console:

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

test(1);
Задание 5

Determinate, senza eseguire il codice, cosa verrà visualizzato in console:

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

test(1);
Задание 6

Determinate, senza eseguire il codice, cosa verrà visualizzato in console:

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

test(1);