Ista imena promenljivih u funkcijama u JavaScriptu
Neka i izvan funkcije, i unutar nje postoji promenljiva
num. U ovom slučaju bilo koja promena
lokalne promenljive num ni na koji način ne
utiče na globalnu promenljivu num:
let num = 1; // globalna promenljiva
function func() {
let num = 2; // lokalna promenljiva
console.log(num);
}
func(); // pozivamo funkciju, ispisaće 2
console.log(num); // ispisaće 1 - globalna promenljiva se nije promenila
Ali, ako zaboravimo da deklarišemo lokalnu promenljivu
num preko let, onda unutar funkcije
neće biti kreirana lokalna promenljiva num,
već će se jednostavno promeniti globalna promenljiva:
let num = 1;
function func() {
num = 2; // zaboravili smo da napišemo let - menjamo spoljnu promenljivu
console.log(num);
}
func(); // pozivamo funkciju, ispisaće 2
console.log(num); // ispisaće 2 - promenljiva se promenila
Ovde mogu postojati dve situacije: ili smo zaista
želeli da promenimo globalnu promenljivu (onda je
sve u redu), ili smo zaboravili let i slučajno
promenili globalnu promenljivu.
Drugi slučaj predstavlja teško uočljivu grešku,
koja vodi ka nepredvidivom ponašanju skripte.
Zato uvek, kada uvodite novu promenljivu deklarišite je
preko let.
Odredite, bez pokretanja koda, šta će biti ispisano u konzolu:
let num = 1;
function func() {
num = 2;
}
func();
console.log(num);
Odredite, bez pokretanja koda, šta će biti ispisano u konzolu:
let num = 1;
function func() {
let num = 2;
}
func();
console.log(num);