Nume identice de variabile în funcții în JavaScript
Să presupunem că atât în afara funcției, cât și în interiorul ei există o variabilă
num. În acest caz, orice modificări
asupra variabilei locale num nu
afectează variabila globală num:
let num = 1; // variabilă globală
function func() {
let num = 2; // variabilă locală
console.log(num);
}
func(); // apelăm funcția, va afișa 2
console.log(num); // va afișa 1 - variabila globală nu s-a schimbat
Dar, dacă uităm să declarăm variabila locală
num cu let, atunci în interiorul funcției
nu se va crea variabila locală num,
ci doar se va modifica variabila globală:
let num = 1;
function func() {
num = 2; // am uitat să scriem let - modificăm variabila externă
console.log(num);
}
func(); // apelăm funcția, va afișa 2
console.log(num); // va afișa 2 - variabila s-a schimbat
Aici pot exista două situații: fie chiar
am vrut să modificăm variabila globală (atunci
totul este în regulă), fie am uitat de let și din greșeală
am modificat variabila globală.
A doua situație este o eroare dificil de detectat,
care duce la un comportament imprevizibil al scriptului.
Prin urmare, întotdeauna, atunci când introduceți
o nouă variabilă, declarați-o
cu let.
Stabiliți, fără a rula codul, ce se va afișa în consolă:
let num = 1;
function func() {
num = 2;
}
func();
console.log(num);
Stabiliți, fără a rula codul, ce se va afișa în consolă:
let num = 1;
function func() {
let num = 2;
}
func();
console.log(num);