valor - Confusión de variable local y global de Javascript
javascript funciones como parametros (2)
En Javascript, las declaraciones de variables se mueven automáticamente a la parte superior de la función. Entonces, el intérprete lo haría ver más como esto:
var myname = "initial"
function c(){
var myname;
// alerts undefined
alert(myname);
myname = "changed";
// alerts changed
alert(myname);
}
c();
Esto se llama ''izar''.
Debido al alzamiento y al hecho de que el alcance de cualquier variable es la función en la que está declarado, es una práctica estándar enumerar todas las variables en la parte superior de una función para evitar esta confusión.
Esta pregunta ya tiene una respuesta aquí:
- ¿Cómo funcionan los cierres de JavaScript? 88 respuestas
- Variable: alcance local, alcance global o es el motor de JavaScript? 3 respuestas
Soy nuevo en JavaScript y estaba haciendo algunas prácticas en ámbitos de variables locales y globales, a continuación está mi código ( fiddle ):
var myname = "initial"
function c(){
alert(myname);
var myname = "changed";
alert(myname);
}
c();
cuando se llama a la primera alerta, muestra myname
como indefinido. entonces mi confusión es por qué no puedo acceder a una instancia global de myname
y si no defino myname
dentro de la función, funcionará bien.
No es reemplazar la variable global. Lo que está sucediendo se llama "elevación variable". Es decir, var myname;
se inserta en la parte superior de la función. Siempre inicialice sus variables antes de usarlas, intente esto:
var myname = "initial";
function c() {
alert(myname);
myname = "changed";
alert(myname);
}
c();