Antes de aprender sobre el alcance variable en JavaScript, debemos aclarar algunos puntos:
•El alcance variable de JavaScript se basa en su cadena de alcance única.
•JavaScript no tiene alcance a nivel de bloque.
•Las variables declaradas en una función se definen a lo largo de la función.
1. Cadena de alcance de JavaScript
Primero mire el siguiente código:
Copie el código de código de la siguiente manera:
<script type="text/javascript"> var rain = 1; function rainman(){ var man = 2; function internal(){ var internalVar = 4; } rainman(); //Llamar a la función rainman</script>
Observe el código de alerta (lluvia); JavaScript primero verifica si la variable lluvia está definida en la función interna. Si está definida, se usa la variable lluvia en la función interna. Si la variable lluvia no está definida en la función interna, JavaScript continuará verificando si la variable lluvia. está definido en la función Rainman. En este código, la variable lluvia no está definida en el cuerpo de la función Rainman, por lo que el motor JavaScript continuará buscando (objeto global) para ver si la lluvia está definida en el objeto global. lluvia definida = 1, por lo que el resultado final aparecerá '1'.
Cadena de alcance: cuando JavaScript necesita consultar una variable x, primero buscará el primer objeto en la cadena de alcance. Si el primer objeto no define Si no hay una definición, la búsqueda continuará, y así sucesivamente.
El código anterior involucra tres objetos de cadena de alcance, en orden: interno, rainman y ventana.
2. Dentro del cuerpo de la función, las variables locales tienen mayor prioridad que las variables globales con el mismo nombre.
Copie el código de código de la siguiente manera:
<script type="text/javascript"> var rain = 1; //Definir la variable global rain function check(){ var rain = 100 //Definir la variable local rain alert( rain ); aquí } check (); alerta( lluvia ); //1 aparecerá aquí</script>
3. JavaScript no tiene alcance a nivel de bloque.
Esta es también la parte en la que JavaScript es más flexible que otros lenguajes.
Observe atentamente el código a continuación y encontrará que los alcances de las variables i, j y k son los mismos y son globales en todo el cuerpo de la función de lluvia.
Copie el código de código de la siguiente manera:
<script type="text/javascript"> function rainman(){ // Hay tres variables locales ijk en el cuerpo de la función rainman var i = 0; if ( 1 ) { var j = 0; k < 3; k++) { alerta( k ); //Aparece 0 1 2 respectivamente } alerta( k ); //Aparece 3 } alerta( j );
4. Las variables declaradas en la función se definen en toda la función.
Primero observe este código:
Copie el código de código de la siguiente manera:
<script type="text/javascript"> function rain(){ var x = 1; function man(){ x = 100; //Llame a man alert( x ); } lluvia(); //Llamar lluvia</script>
El código anterior ilustra que la variable x se puede usar en todo el cuerpo de la función Rain y se puede reasignar. Debido a esta regla, se producirán resultados "increíbles", observe el código a continuación.
Copie el código de código de la siguiente manera:
<script type="text/javascript"> var x = 1; function rain(){ alert( x ); //Aparece 'indefinido' en lugar de 1 var x = 'rain-man'; /pop 'hombre-lluvia' } lluvia();</script>
Esto se debe a que la variable local x en la función lluvia está definida en todo el cuerpo de la función (var x = 'rain-man', declarado), por lo que la variable global x con el mismo nombre está oculta en todo el cuerpo de la función lluvia. La razón por la que aparece "indefinido" aquí es porque cuando se ejecuta alert(x) por primera vez, la variable local x aún no se ha inicializado.
Entonces la función de lluvia anterior es equivalente a la siguiente función:
Copie el código de código de la siguiente manera:
función lluvia(){ var x; alerta( x );
5. Las variables definidas sin utilizar la palabra clave var son variables globales.
Copie el código de código de la siguiente manera:
<script type="text/javascript"> function rain(){ x = 100; //Se declara y asigna la variable global x} rain(); //100 aparecerá </script>
Este también es un error común entre los novatos en JavaScript, que deja muchas variables globales sin querer.
6. Las variables globales son todas propiedades del objeto de ventana.
Copie el código de código de la siguiente manera:
<script type="text/javascript"> var x = 100 alerta( window.x);//aparece 100 alerta(x);</script>
Equivalente al siguiente código
Copie el código de código de la siguiente manera:
<script tipo="text/javascript"> ventana.x = 100; alerta( ventana.x );