Variabili globali e parametri delle funzioni in JavaScript

Supponiamo di avere una funzione che accetta un numero come parametro:

javascriptfunction func(localNum) {
  console.log(localNum);
}

Supponiamo che all'esterno della funzione ci sia una variabile num:

javascriptfunction func(localNum) {
  console.log(localNum);
}

let num = 1; // variabile globale esterna

Chiamiamo la nostra funzione, passandole la variabile num come parametro:

javascriptfunction func(localNum) {
  console.log(localNum);
}

let num = 1;
func(num); // chiamiamo la funzione con il parametro, stamperà 1

Risulterà che all'interno della funzione saranno accessibili sia la variabile localNum (parametro della funzione) che la variabile num (come variabile esterna):

javascriptfunction func(localNum) {
  console.log(num); // stamperà 1
  console.log(localNum); // stamperà 1
}

let num = 1;
func(num);

La variabile localNum stessa sarà una variabile locale della funzione e non sarà accessibile dall'esterno:

javascriptfunction func(localNum) {
  
}

let num = 1;
func(num); // chiamiamo la funzione con il parametro
console.log(localNum); // darà un errore

Poiché la variabile localNum è locale, qualsiasi modifica ad essa non cambierà nulla all'esterno:

javascriptfunction func(localNum) {
  localNum = 2; // non cambia nulla all'esterno
}

let num = 1;
func(num);

Se invece modifichiamo all'interno la variabile num (globale), le modifiche appariranno anche all'esterno:

javascriptfunction func(localNum) {
  num = 2;
}

let num = 1;
func(num);
console.log(num); // stamperà 2

Tuttavia, se all'interno della funzione dichiariamo la variabile num tramite let, creeremo così una variabile locale num che non influisce in alcun modo sulla variabile esterna:

javascriptfunction func(localNum) {
  let num = 2; // dichiariamo tramite let
}

let num = 1;
func(num);
console.log(num); // stamperà 1 - nulla è cambiato
Задание 1

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

javascriptfunction func(localNum) {
  console.log(localNum);
}

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

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

javascriptfunction func(localNum) {
  console.log(localNum);
}

let num = 1;
func(num);
Задание 3

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

javascriptfunction func(localNum) {
  console.log(localNum);
}

let num = 1;
func(num);
num = 2;
Задание 4

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

javascriptlet num = 1;

function func(localNum) {
  console.log(localNum);
}

num = 2;
func(num);
Задание 5

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

javascriptfunction func(localNum) {
  localNum = 2;
}

let num = 1;
func(num);
console.log(num);
Задание 6

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

javascriptfunction func(localNum) {
  num = 2;
}

let num = 1;
func(num);
console.log(num);
Задание 7

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

javascriptfunction func(localNum) {
  let num = 2;
}

let num = 1;
func(num);
console.log(num);