Determina el conjunto de variables que podemos acceder.
JS tiene Scope Léxico (Lexical Scoping).
El scope de cada variable se determina leyendo el código del programa, sin ejecutarlo.
Cuando hablamos de Scope nos referimos al entorno.
function teamCap () {
var heroe = "Capitán America";
console.log(heroe);
// Capitan America
}
function teamIronMan () {
var heroe = "Iron Man";
console.log(heroe);
// Iron Man
}
Global Scope
Cuando declaramos fuera de toda función o bloque de código.
var comic = 'X-men';
function comprar() {
console.log(`compraste el comic ${comic}`);
// compraste el comic X-Men
}
function leer() {
console.log(`estas leyendo ${comic}`);
// estas leyendo X-Men
}
comprar()
leer()
Local Scope
Block Scope
Bloque de código como un if, while, for, etc. Es decir que están entre llaves.
function mutantes() {
const mutante = 'Wolverine';
if(true {
// Esta variable se quedará solo entre estas llaves.
const mutante = 'Ciclope';
console.log(mutante);
// "Ciclope"
}
console.log(mutante);
// "Wolverine"
}
Fuction Scope
Accesibles dentro de toda la función, pero no fuera de la misma.
function justiceLeague() {
var heroes = ['Batman', 'Superman', 'Aquaman'];
console.log(heroes);
// ['Batman', 'Superman', 'Aquaman']
}
function teenTitans() {
var heroes = ['Robin', 'Raven', 'Terra'];
console.log(heroes);
// ['Robin', 'Raven', 'Terra']
}
console.log(heroes);
// ReferenceError:
// heroes is not defined
<aside> 💡 Para evitar que las funciones se vuelvan impredecibles debemos declarar dentro del scope más reducido.
</aside>