Identieke variabelenamen in functies in JavaScript

Stel dat zowel buiten de functie als binnen een variabele num is. In dit geval hebben eventuele wijzigingen aan de lokale variabele num geen invloed op de globale variabele num:

javascriptlet num = 1; // globale variabele

function func() {
  let num = 2; // lokale variabele
  console.log(num);
}
func(); // roep de functie aan, geeft 2 weer

console.log(num); // geeft 1 weer - globale variabele is niet veranderd

Maar als we vergeten de lokale variabele num te declareren via let, dan wordt er binnen de functie geen lokale variabele num aangemaakt, maar wordt simpelweg de globale variabele gewijzigd:

javascriptlet num = 1;

function func() {
  num = 2; // vergat let te schrijven - wijzigt externe variabele
  console.log(num);
}
func(); // roep de functie aan, geeft 2 weer

console.log(num); // geeft 2 weer - variabele is veranderd

Hier zijn twee situaties mogelijk: of we wilden echt de globale variabele wijzigen (dan is alles oké), of we vergaten let en wijzigden per ongeluk de globale variabele.

Het tweede geval is een moeilijk te vinden fout, die leidt tot onvoorspelbaar gedrag van het script. Declareer daarom altijd, wanneer je een nieuwe variabele introduceert, deze via let.

Задание 1

Bepaal, zonder de code uit te voeren, wat er in de console wordt weergegeven:

javascriptlet num = 1;

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

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

Bepaal, zonder de code uit te voeren, wat er in de console wordt weergegeven:

javascriptlet num = 1;

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

console.log(num);