Identiski mainīgo nosaukumi funkcijās JavaScript

Pieņemsim, ka ārpus funkcijas un iekšā ir mainīgais num. Šajā gadījumā jebkuras izmaiņas ar lokālo mainīgo num nekādā veidā neietekmē globālo mainīgo num:

javascriptlet num = 1; // globālais mainīgais

function func() {
  let num = 2; // lokālais mainīgais
  console.log(num);
}
func(); // izsaucam funkciju, izvadīs 2

console.log(num); // izvadīs 1 - globālais mainīgais nav mainījies

Bet, ja mēs aizmirsīsim deklarēt lokālo mainīgo num caur let, tad funkcijas iekšienē netiks izveidots lokālais mainīgais num, bet vienkārši tiks mainīts globālais mainīgais:

javascriptlet num = 1;

function func() {
  num = 2; // aizmirsām rakstīt let - mainām ārējo mainīgo
  console.log(num);
}
func(); // izsaucam funkciju, izvadīs 2

console.log(num); // izvadīs 2 - mainīgais ir mainījies

Šeit var būt divas situācijas: vai nu mēs patiešām gribējām mainīt globālo mainīgo (tad viss kārtībā), vai mēs aizmirsām let un nejauši mainījām globālo mainīgo.

Otrais gadījums ir grūti noķerama kļūda, kas noved pie neprognozējamas skripta darbības. Tāpēc vienmēr, ieviešot jaunu mainīgo, deklarējiet to caur let.

Задание 1

Nosakiet, nepalaist kodu, ko izvadīs konsole:

javascriptlet num = 1;

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

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

Nosakiet, nepalaist kodu, ko izvadīs konsole:

javascriptlet num = 1;

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

console.log(num);