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:

javascriptlet 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ă:

javascriptlet 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.

Задание 1

Stabiliți, fără a rula codul, ce se va afișa în consolă:

javascriptlet num = 1;

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

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

Stabiliți, fără a rula codul, ce se va afișa în consolă:

javascriptlet num = 1;

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

console.log(num);