Nombres iguales de variables en funciones en JavaScript
Supongamos que tanto fuera como dentro de la función existe una variable
num. En este caso, cualquier cambio
en la variable local num no
afecta de ninguna manera a la variable global num:
let num = 1; // variable global
function func() {
let num = 2; // variable local
console.log(num);
}
func(); // llamamos a la función, mostrará 2
console.log(num); // mostrará 1 - la variable global no cambió
Pero, si olvidamos declarar la variable local
num mediante let, entonces dentro de la función
no se creará la variable local num,
sino que simplemente se cambiará la variable global:
let num = 1;
function func() {
num = 2; // olvidamos escribir let - cambiamos la variable externa
console.log(num);
}
func(); // llamamos a la función, mostrará 2
console.log(num); // mostrará 2 - la variable cambió
Aquí pueden darse dos situaciones: o realmente
queríamos cambiar la variable global (entonces
todo está bien), o olvidamos let y accidentalmente
cambiamos la variable global.
El segundo caso es un error difícil de detectar,
que conduce a un comportamiento impredecible del script.
Por lo tanto, siempre, al introducir una nueva variable, declárela
mediante let.
Determine, sin ejecutar el código, qué se mostrará en la consola:
let num = 1;
function func() {
num = 2;
}
func();
console.log(num);
Determine, sin ejecutar el código, qué se mostrará en la consola:
let num = 1;
function func() {
let num = 2;
}
func();
console.log(num);