Emrat e njëjtë të variablave në funksione në JavaScript

Le të themi se si jashtë funksionit ashtu edhe brenda ka një variabël num. Në këtë rast, çdo ndryshim me variablin lokal num nuk ndikon në asnjë mënyrë në variablin global num:

javascriptlet num = 1; // variabël global

function func() {
  let num = 2; // variabël lokal
  console.log(num);
}
func(); // therasim funksionin, do të shfaqet 2

console.log(num); // do të shfaqet 1 - variabli global nuk ndryshoi

Por, nëse harrojmë të deklarojmë variablin lokal num përmes let, atëherë brenda funksionit nuk do të krijohet variabli lokal num, por thjesht do të ndryshojë variabli global:

javascriptlet num = 1;

function func() {
  num = 2; // harruam të shkruajmë let - po ndryshojmë variablin e jashtëm
  console.log(num);
}
func(); // therasim funksionin, do të shfaqet 2

console.log(num); // do të shfaqet 2 - variabli ndryshoi

Këtu mund të ketë dy situata: ose ne vërtet donim të ndryshonim variablin global (atëherë gjithçka është në rregull), ose kemi harruar let dhe aksidentalisht ndryshuam variablin global.

Rasti i dytë është një gabim i vështirë për t'u kapur, që çon në sjellje të paparashikueshme të skriptit. Prandaj gjithmonë, kur futni një variabël të re deklarojeni atë përmes let.

Задание 1

Përcaktoni, pa ekzekutuar kodin, çfarë do të shfaqet në konsol:

javascriptlet num = 1;

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

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

Përcaktoni, pa ekzekutuar kodin, çfarë do të shfaqet në konsol:

javascriptlet num = 1;

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

console.log(num);