Nomi di variabili identici nelle funzioni in JavaScript

Supponiamo che sia all'esterno che all'interno della funzione ci sia una variabile num. In questo caso, qualsiasi modifica alla variabile locale num non influisce in alcun modo sulla variabile globale num:

javascriptlet num = 1; // variabile globale

function func() {
  let num = 2; // variabile locale
  console.log(num);
}
func(); // chiamiamo la funzione, stamperà 2

console.log(num); // stamperà 1 - la variabile globale non è cambiata

Ma, se dimentichiamo di dichiarare la variabile locale num tramite let, allora all'interno della funzione non verrà creata la variabile locale num, ma semplicemente verrà modificata la variabile globale:

javascriptlet num = 1;

function func() {
  num = 2; // dimenticato di scrivere let - modifichiamo la variabile esterna
  console.log(num);
}
func(); // chiamiamo la funzione, stamperà 2

console.log(num); // stamperà 2 - la variabile è cambiata

Qui possono verificarsi due situazioni: o volevamo davvero cambiare la variabile globale (allora tutto ok), oppure abbiamo dimenticato let e accidentalmente cambiato la variabile globale.

Il secondo caso è un errore difficile da individuare, che porta a un comportamento imprevedibile dello script. Pertanto, ogni volta che si introduce una nuova variabile, dichiaratela sempre tramite let.

Задание 1

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

javascriptlet num = 1;

function func() {
  num = 2;
}
func();

console.log(num);
Задание 2

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

javascriptlet num = 1;

function func() {
  let num = 2;
}
func();

console.log(num);