En algunos lenguajes de programación tipo C, cada parte de código en los aparatos ortopédicos tiene su propio alcance, y las variables son invisibles fuera del segmento de código que los declara. Llamamos alcance de bloque, y no hay alcance de bloque en JavaScript. En cambio, JavaScript usa el alcance de la función: las variables se definen en el cuerpo de la función que lo declara y cualquier cuerpo de función anidada en el cuerpo de la función. En el siguiente código, I, J y K definidos en diferentes ubicaciones se definen dentro del mismo alcance.
La copia del código es la siguiente:
texto de función (o)
{
var i = 0;
alerta (typeOf o);
if (typeof o == "cadena")
{
var j = 0;
para (var k = 0; k <10; k ++)
{
alerta (k); // Salida 0-9
}
alerta (k); // Salida 10
}
alerta (j); // Salida 0
}
El alcance de la función de JavaScript significa que todas las variables declaradas dentro de una función siempre son visibles en el cuerpo de la función. Curiosamente, esto significa que las variables están incluso disponibles antes de ser declaradas. Esta característica de JavaScript se llama informalmente elevado, es decir, todas las variables declaradas en el cuerpo de funciones de JavaScript (sin tarea involucrada) están "avanzadas" en la parte superior del cuerpo de la función. Mira el siguiente código
La copia del código es la siguiente:
var global = "Globas";
function globals ()
{
alerta (global); // indefinido
var global = "hola qdao";
alerta (global); // hola qdao
}
Debido a la naturaleza del alcance de la función, las variables locales siempre se definen en todo el cuerpo de la función, lo que significa que las variables dentro del cuerpo de la función cubren las variables globales con el mismo nombre. A pesar de esto, las variables locales se asignarán realmente cuando el programa ejecute la instrucción VAR. Por lo tanto, el proceso anterior es equivalente a: declarar las variables en la función "avanzar" a la parte superior del cuerpo de la función y dejar la inicialización de las variables de colega en la posición original:
La copia del código es la siguiente:
var global = "Globas";
function globals ()
{
var global;
alerta (global); // indefinido
global = "hola qdao";
alerta (global); // hola qdao
}