Azonos változónevek függvényekben JavaScriptben
Tegyük fel, hogy mind a függvényen kívül, mind a függvényen belül van egy
num változó. Ebben az esetben a lokális num változóval
végrehajtott módosítások semmilyen hatással nincsenek a globális
num változóra:
let num = 1; // globális változó
function func() {
let num = 2; // lokális változó
console.log(num);
}
func(); // meghívjuk a függvényt, kiírja a 2-t
console.log(num); // kiírja 1 - a globális változó nem változott
De ha elfelejtjük a let kulcsszóval deklarálni a lokális num
változót, akkor a függvényen belül nem jön létre lokális num változó,
hanem egyszerűen a globális változó módosul:
let num = 1;
function func() {
num = 2; // elfelejtettük a let-et - a külső változót módosítjuk
console.log(num);
}
func(); // meghívjuk a függvényt, kiírja a 2-t
console.log(num); // kiírja 2 - a változó megváltozott
Ilyenkor két helyzet lehetséges: vagy valóban a globális változót akartuk
módosítani (akkor minden rendben), vagy elfelejtettük a let-et és
véletlenül megváltoztattuk a globális változót.
Az utóbbi eset egy nehezen felderíthető hiba, amely a szkript kiszámíthatatlan
viselkedéséhez vezet. Ezért mindig, amikor új változót vezetsz be, deklaráljad
a let kulcsszóval.
Határozd meg, kód futtatása nélkül, hogy mi jelenik meg a konzolon:
let num = 1;
function func() {
num = 2;
}
func();
console.log(num);
Határozd meg, kód futtatása nélkül, hogy mi jelenik meg a konzolon:
let num = 1;
function func() {
let num = 2;
}
func();
console.log(num);