El scope es el alcance (accesibilidad) que va a tener la variable dentro del código.
Es aquel que permite a las variables, ser accesibles en todo el código de javascript. Con accesible, me refiero a obtener el valor de su contenido o a modificarlo, las variables globales se declaran con la palabra reservada var``let``const
siempre que no esten dentro de ninguna función
var titulo = "Hello world"letotroTitulo = "Nuevo Hello world"variableGlobal = "Esta es una variable global"
🚫 Se puede declar una variable sin palabra reservada:
variableGlobal = "Esta es una variable global"
pero es una mala práctica
Es el alcance o el acceso que tienen las variable definidas dentro de un bloque de código: una función, un bloque condicional o un ciclo.
Las variable de bloque, son declaradas con let``const
const helloWorld = () => {
const hello = "hello world"console.log(hello)
}
// Aqui no es accesible hello
Toda variable declarada dentro de una función tiene scope local o scope léxico, es decir, existen solo dentro de ese bloque (salvo que se declare sin palabra reservada)
varvariable = "Soy una variable global"// Esta variable es de alcance local
const unaFuncion = () => {
varvariable = "Ahora soy una variable local"// Esta variable es de alcance local
const scopeFuncion = () => {
returnvariable
}
console.log(scopeFuncion())
}
unaFuncion()
console.log(variable)
> Ahora soy una variablelocal
> Soy una variableglobal
En este caso, si solo la declaramos dentro de la función, no podemos accederla fuera de la misma. Esto es debido al scope function
const unaFuncion = () => {
varvariable = "Ahora soy una variable local"
const scopeFuncion = () => {
returnvariable
}
console.log(scopeFuncion())
}
unaFuncion()
console.log(variable)
> Ahora soy una variablelocal
> console.log(variable)
^
ReferenceError: variable is not defined
Ahora, veamos qué pasa si la declaramos dentro de a función sin palabra reservada, ya no tenemos el error, pero es una mala práctica
const unaFuncion = () => {
variable = "Ahora soy una variable local"
const scopeFuncion = () => {
returnvariable
}
console.log(scopeFuncion())
}
unaFuncion()
console.log(variable)
> Ahora soy una variablelocal
> Ahora soy una variablelocal