Enaka imena spremenljivk v funkcijah v JavaScript

Naj bo tako zunaj funkcije kot znotraj spremenljivka num. V tem primeru kakršne koli spremembe z lokalno spremenljivko num ne vplivajo na globalno spremenljivko num:

javascriptlet num = 1; // globalna spremenljivka

function func() {
  let num = 2; // lokalna spremenljivka
  console.log(num);
}
func(); // kličemo funkcijo, izpiše 2

console.log(num); // izpiše 1 - globalna spremenljivka se ni spremenila

Toda, če pozabimo deklarirati lokalno spremenljivko num z let, potem se znotraj funkcije ne bo ustvarila lokalna spremenljivka num, ampak se bo preprosto spremenila globalna spremenljivka:

javascriptlet num = 1;

function func() {
  num = 2; // pozabili napisati let - spreminjamo zunanjo spremenljivko
  console.log(num);
}
func(); // kličemo funkcijo, izpiše 2

console.log(num); // izpiše 2 - spremenljivka se je spremenila

Tu sta možni dve situaciji: ali smo resnično želeli spremeniti globalno spremenljivko (potem je vse v redu), ali smo pozabili let in po naključju spremenili globalno spremenljivko.

Druga situacija je težko zaznavna napaka, ki vodi do nepredvidljivega obnašanja skripte. Zato vedno, ko vnašate novo spremenljivko, jo deklarirajte z let.

Задание 1

Določite, ne da bi zagnali kodo, kaj se bo izpisalo v konzolo:

javascriptlet num = 1;

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

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

Določite, ne da bi zagnali kodo, kaj se bo izpisalo v konzolo:

javascriptlet num = 1;

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

console.log(num);