👉🏼 Aprende más sobre JS, explora nuestros nuevos Cursos de Javascript.
El scope puede definirse como el alcance que una variable tendrá en tu código. En otras palabras, el scope decide a qué variables tienes acceso en cada parte del código. Existen dos tipos de scope, el scope global y el scope local. A continuación te mostraré un par de ejemplos explicando en qué consiste cada uno de ellos.
Cuando puedes acceder a una variable únicamente en cierta parte del código, se dice que esa variable está declarada en el scope local. Estas también son conocidas como variables locales. Un ejemplo de esto es cuando una variable está declarada dentro de un bloque o una función. Si tratas de acceder a esta variable fuera de esta función o bloque, tendrás un error que dirá que la variable no está definida.
functionplatzi() {
const soyEstudiante = true;
console.log(soyEstudiante);
}
platzi(); // trueconsole.log(soyEstudiante); // soyEstudiante is not defined
Se dice que una variable está en el sope global cuando está declarada fuera de una función o de un bloque. También son conocidas como variables globales. Puedes acceder a este tipo de variables desde cualquier parte de tu código, ya sea dentro o fuera de una función.
const soyEstudiante = true;
functionplatzi() {
console.log(soyEstudiante);
}
platzi(); //trueconsole.log(soyEstudiante); //true
A pesar de que JavaScript nos permite declarar una variable como global, no es una buena práctica. Una de las razones es porque tenemos la posibilidad de declarar dos variables globales en distintas partes del código con el mismo nombre sin notarlo.
let platzi = 'Esto está fuera del bloque';
if (true) {
let platzi = 'Esto está dentro del bloque';
console.log(platzi); //Esto está dentro del bloque
}
console.log(platzi) //Esto está fuera del bloque
Como podemos ver en el código anterior 👆🏻, aún y cuando declaré dos variables con el mismo nombre no se pisaron, ya que una de ellas está declarada dentro de un bloque y sólo es posible acceder a su valor dentro de éste. Por otro lado, si ambas variables estuvieran declaradas dentro del mismo scope, un mensaje de error sería mostrado en nuestra consola.
let platzi = 'Esto está afuera del bloque';
if (true) {
...
}
let platzi = 'Misma variable declarada dos veces'; // Error, platzi has already been declared
var platzi = 'Esto está afuera del bloque';
if (true) {
var platzi = 'Esto está dentro del bloque';
console.log(platzi); //Esto está dentro del bloque
}
console.log(platzi); //Esto está dentro del bloque
Puede ser común también que tengas una función dentro de otra. En este caso, la función que está por fuera no tendrá acceso a las variables que se encuentran en la función de adentro, sin embargo, la función de adentro sí tendra acceso a las variables que se encuentran declaradas en la función de afuera.
functionafuera() {
let variable_afuera = 'Esta variable está declarada afuera';
functionadentro() {
let variable_adentro = 'Esta variable está declarada adentro';
console.log(variable_afuera); // Esta variable está declarada afuera
}
console.log(variable_adentro); // variable_adentro is not defined
}
En conclusión, el término scope no es tan extremadamente difícil de entender, es simple una vez que sabes la diferencia entre los distintos tipos que existen. Recuerda: cuando declaras una variable en una función sólo podrás acceder a su valor dentro de esa función. Si después de haber leído este tutorial sigues confundido con este concepto, no dudes en dejar tus preguntas en los comentarios.
Aprende más: ¿Qué son variables y constantes?
Llegué a esta entrada luego de haber tomado la clase de scope del curso de JS Básico, y el ejemplo que más me funcionó es este: la variable local es como algo que está en tu casa, la variable global es algo que está en la calle: desde tu casa puedes ver lo que está adentro Y lo que está en la calle, pero desde la calle no puedes ver lo que hay dentro de tu casa.
Muy buen ejemplo
Excelente ejemplo
Este término me pareció complejo cuando Freddy lo comento en el primer curso básico de programación, pero lo explicaste muy bien, por el momento no tengo dudas.
Muchas gracias.
Very well information, thanks you ❗
buenísimo post, gracias!
Mavarilloso tutorial!!! te felicito!
Estoy de acuerdo Concito Carlos!
Gracias fue una muy buena explicación.
Muchas gracias por la explicación fue realmente clara.
Excelente!
Si, la verdad es que esta muy bien explicado, incluir el código para observarlo es una gran idea
🙂
vengo de la ruta de algoritmos y pensamiento lógico y wow es increíble como algo tan simple como un try…catch me trajo asta aquí… Y mas cuando la lectura me da sueño pero leyendo artículos sobre programación no siento en que momento se me va el tiempo. Gracias por tu aporte me fue muy útil
muy buena me ayudo entender mejor
A mi me queda mucho mas claro después de ver el curso de ECMAScript6, y la verdad, ya ni me acordaba como utilizar estas variables para mis proyectos, me voy a quedar practicando.
Increíble, muchas gracias! ❤️
Muy buen aporte muchas gracias 💚 Eres lo maximo!
Super!! muchas gracias
Gracias. Me ayudó a aclararme con el tema.
Buena explicacion 😄
Muy bien explicado, gracias 👍
#Nice
y en un articulo del 2017 D:
vaya que ya es mucho tiempo 😄
woah
fanny con todo respeto, te vez divina en tu foto de perfil.
Muy buena esta explicación, muchas gracias 😃