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:
let 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:
let 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.
Nosakiet, nepalaist kodu, ko izvadīs konsole:
let num = 1;
function func() {
num = 2;
}
func();
console.log(num);
Nosakiet, nepalaist kodu, ko izvadīs konsole:
let num = 1;
function func() {
let num = 2;
}
func();
console.log(num);