¿Qué es el SCOPE en las variables?
Se define como la accesibilidad o visibilidad que tiene una variable en el código. En javascript existen tres scopes:
- Global.
- Function.
- Block.
¿Cómo identificar cada una de ellas?
Global Scope.
Por seguridad no se recomienda declarar variables con scope global, esto se debe a que pueden ser facilmente accedidas de la siguiente forma: window.variableGlobal. La forma de ser declaradas son las siguientes;
- Declarando la variable fura de bloques y funciones, hasta el inicio del archivo de la siguiente manera.
let globalScope_let; //Declarada fuera de funciones y bloques
var globalScope_var; //Declarada fuera de funciones y bloques
const GLOBAL_SCOPE_const; //Declarada fuera de funciones y bloques
function example() {
console.log(globalScope_let); //Puede ser accedida al ser global
console.log(globalScope_var); //Puede ser accedida al ser global
console.log(GLOBAL_SCOPE_const); //Puede ser accedida al ser global
}Function Scope.
Son aquellas variables que son contenidas dentro de funciones, solo pueden ser accedidas por elementos dentro de esa misma función.
function functionScope() {
let functionScope_let; //Solo accesible desde functionScope
var functionScope_var; //Solo accesible desde functionScope
const functionScope_const; //Solo accesible desde functionScope
}
console.log(functionScope_let); //ReferenceError, no es accesible
console.log(functionScope_var); //ReferenceError, no es accesible
console.log(functionScope_const); //ReferenceError, no es accesibleBlock Scope.
Variables que se encuentran dentro de bloques o contenidas dentro de llave { ... }. Siempre y cuando no sea una función.
if (true) {
let blockScope_let; //Solo accesible dentro del bloque del if
var blockScope_var; //Solo accesible dentro del bloque del if
const BLOCK_SCOPE_CONST; //Solo accesible dentro del bloque de if
}
for (let index = 0; index < bound; index++) {
let blockScope_let; //Solo accesible dentro del bloque del for
var blockScope_var; //Solo accesible dentro del bloque del for
const BLOCK_SCOPE_CONST; //Solo accesible dentro del bloque del for
}