El scope es cada uno de los entornos donde las variables tienen alcance dentro del código de JavaScript. En otras palabras, determina que valor tendrá la variable dependiendo dónde se encuentre.
Imagina que pierdes algo importante (llaves, dinero, etc.), comienzas a buscar este objeto por los lugares más cercanos en que te encuentras; si no lo encuentras, buscas en los lugares más lejanos y así sucesivamete hasta encontrarlo. En JavaScript sucede algo similar.
Si haces referencia a una variable, el motor de JavaScript buscará su declaración en el entorno más cercano, y seguirá buscando en entornos más lejanos hasta llegar a la línea de código que la variable esté declarada. A este proceso se lo denomina cadena de scope(scope chaining).
Se dice que JavaScript tiene un scope léxico (lexical scope), porque para determinar el scope de una variable es necesario leer el código, sin ejecutarlo.
Tipos de scope
Existen dos tipos de scope: global y local. El scope local puede ser de función o de bloque.
Un bloque es toda porción de código que está encerrada entre llaves {}, estos pueden ser los bloques: función, if, else, while, y for.
En la imagen anterior, el entorno más cercano para la variable saludo es el scope de bloque, luego el scope de función y finalmente el scope global. Este es un ejemplo del recorrido que sigue JavaScript hasta encontrar la variable que se hace referencia.
Declaración y asignación de variables
La declaración de una variable en el código es crearla mediante var, let o const y un identificador. La asignación es proveer de un valor a la variable creada.
var nombre // declaración
nombre = "Andres"// asignación
La declaración y la asignación se puede realizar en la misma línea de código.
var nombre = "Andres"
Declaración de variables con var, let y const
Hasta ahora aprendiste a declarar variables con var, sin embargo, a partir de la especificación de ECMAScript 6 se agregaron nuevas formas para la declaración de variables.
Let y const resuelven varios problemas con var como el hoisting, variables globales, re-declaración y re-asignación de variables. En el tema del scope, que es el que nos interesa, se diferencian porque let y consttienen un scope de bloque y var no.
Variables re-declaradas y re-asignadas
La re-declaración es volver a declarar una variable, y la re-asignación es volver a asignar un valor.
Una variable declarada con var puede ser re-declarada y re-asignada.
Una variable declarada con let puede ser re-asignada, pero no re-declarada.
Una variable declarada con const no puede ser re-declarada, ni re-asignada. Su declaración y asignación debe ser en una línea, caso contrario habrá un error.
Existe un curso de ECMAScript 6+ para que descubras las nuevas características que agregan al lenguaje.
Scope Global
Las variables globales son aquellas que se encuentran declaradas fuera de los bloques de código o funciones y no importa si son declaradas con var, let o const.
El scope global es el entorno donde las variables globales pueden ser accedidas desde cualquier lugar de nuestro programa.
En el siguiente ejemplo, mira el código y piensa qué mostrará en consola. Una vez tengas las respuestas, abre la consola. ¿Qué sucedió?
Con este ejemplo podemos concluir que: el valor "Chao var" prevalece para el valor global "Hola var", y los demás valores globales si se muestran en consola. Una variable global puede ser accedida en cualquier parte, porque el scope global es el último entorno en el que JavaScript busca una variable. Recuerda esto cuándo se hable de scope local.
Buenas prácticas de Scope
Declarar las variables con el scope más reducido posible.
Siempre declarar variables. (empieza dejar de usar var)
Nunca realizar una doble declaración. Por ejemplo: let nombre = animal = "gatito"
*Contribución creada con los aportes de Andrés Guano.
Aportes 171
Preguntas 47
Ordenar por:
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?
Scope: Es el alcance que va a tener una variable dentro del código. En otras palabras, el Scope se encargará de decidir a que bloques de código va a acceder una variable.
Global Scope : No están dentro de funciones o bloques, por lo tanto se puede acceder a ellas de manera global.
Con var podemos re-asignar una variable pero es una mala práctica.
Con let y const no podemos, aparecerá un error.
Es una mala práctica crear una variable sin las palabras reservadas: var, let y const.
Si se asigna una variable dentro de una función sin las palabras reservadas será una variable global.
La doble asignación de una variable también es una mala práctica.
Además de la extensión recomendada por Oscar en esta clase, pueden usar nodemon para ejecutar sus programas de JavaScript de manera instantánea al guardar el archivo 😃
Si son tan nuevos como yo y probablemente estén siguiendo la ruta del JS Challenge, les recomiendo muchísimo complementar las clases de Scope con este video del gran Sacha Lifszyc 😄
Al final de las clases y del video, tendrán una mejor perspectiva sobre qué es scope, tipos de scope e incluso nuevos conceptos como el Scope Chain o el Variable Shadowing. Recuerden Sacha también es profesor de Platzi, dejo aquí sus cursos por si alguno le interesa:
Que es el Scope:
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.
Qué es el Scope Global
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.
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.
De hecho hoy en día ya casi que es una mala práctica usar “var”, se debe tratar de usar “let” o “const” por eso mismo, “var” a la larga puede dar MUCHOS probemas
Para profundizar en por qué sucede todo esto, les recomiendo el libro “You don’t know JavaScript yet” que lo encuentran gratis en Github. Es denso pero vale la pena
Es el alcance que tendrá tu variable dentro de tu código, o en otras palabras el scope es quién se encargará de decidir a que bloques de código va a acceder una variable. Tenemos dos tipos de scope:
Scope local
Scope global
Al establecer la variable de la siguiente forma podemos acceder durante todo el tiempo a esta, ya que está asignada de forma global.
var hello = 'Hello'console.log(`${hello}`)
Con var podemos reasignar el valor de la variable pero esto se considerá una mala práctica y debe evitarse a toda costa.
var hello = 'Hello'var hello = 'Hello +'console.log(`${hello}`)
Si tratamos de reasignar un valor a una variable con let la consola no dirá que hay un error en nuestro código, ya que no se le puede asignar un nuevo valor. Igualmente pasa lo mismo con const.
var hello = 'Hello'let world = 'Hello world'let world = 'Hello'const helloWorld = 'Hello world!!!'const helloWorld = 'Hello!!!'const antherFunction = () => {
console.log(`${hello}`)
console.log(`${world}`)
console.log(`${helloWorld}`)
}
antherFunction();
Podemos crear variables dentro de funciones que pueden ser accedidas desde fuera de la función de la siguiente forma, aunque esto considerado una mala práctica. Además, si se asigna una variable dentro de una función sin las palabras reservadas será una variable global.
Buena clase pero me parece que hay un pequeño error, el profe dice que no se puede reasignar un valor a un let sin embargo veo muchos ejercicios donde en un ciclo for utilizar let i = 0 como valor iterador donde le suman 1 cada ciclo i++, eso no sería reasignar el valor de un let? Mmmm
El profesor se equivocó, una variable tipo let si se le puede reasignar, solo que no se bebe colocar nuevamente la palabra reservada let. En el caso de este video sería así
let world = 'Hello World'
world = 'Ahora se rasigno a esto';
console.log(world);
eh visto los videos dos veces, y ya puedo decir que NO S EXPLICA EL PORQUE DE LAS COSAS, simplemente se poenen ejemplos pero no se dice porque una variable no delcarada con la palabra reservada var, se convierte en global si es declarada dentro de la funcion
la verdad creo que este curso aunque tiene buen contenido
Les comparto el código de la clase un poco con mi estilo y anotaciones
//Scope Global// Var se puede reasignar pero es una mala práctica, en cambio//Let y const no se pueden reasignar
var hello = 'Hello';
let world = 'Hello World';
const helloWorld = 'Hello World';
const anotherFunction = () =>{
console.log(hello);
console.log(world);
console.log(helloWorld);
}
anotherFunction();/*Malas prácticas a tener en cuenta, no crear variables GLOBALES
dentro de funciones*/
const holaMundo = () =>{
globalVar = 'im global';
}
holaMundo();
console.log(globalVar);//
const otraFuncion = () =>{
var localVar = globalVar = 'Im Global';
}
//Antes de generar la variable global globalVar es necesario ejecutar la función
otraFuncion();
console.log(globalVar);```
No me gusta como enseña Oscar, va demasiado rápido y no te explica el por que de las cosas. Tuve que ir a otros lados para buscar una explicación sencilla.
-Las variables globales se pueden llamar desde cualquier parte de nuestro código.
-Existen dos errores comunes al llamar una variable global en una función
1.- Cuando no colocamos “var” “let” ó “const”
variableGlobal = 'Esto es una variable global'
2.- Cuando colocamos un solo “var” para igualar dos variables
var variableLocal = variableGlobal = 'Variable Global';
**- Las variables locales solo viven dentro de una función **
**Y por último las variables de bloque se introdujeron con el ES2015 “const” y “let” van a vivir dentro de un bloque. **
Al intentar ejecutar dentro de Visual Studio me aparece lo siguiente:
[Running] node "c:\Users\jocaf\desktop\joaquin\platzi\Platzi - Curso de Closures y Scope en JavaScript\src\Scope\tempCodeRunnerFile.js"
'node' isnot recognized as an internal or external command,
operable program or batch file.
[Done] exited with code=1in0.077 seconds```
//----------SCOPE GLOBAL------------
var hello = "Hello";
var hello = "Hello +"; // Se puede reasignar (Pero es mala práctica)
let world = "Hello World";
let world = "Hello"; // Se puede reasignar pero no se puede re-declarar
const helloWorld = "Hello World!"; // No se puede reasignar
const anotherFuction = () => {
console.log(hello);
console.log(world);
console.log(helloWorld);
};
anotherFuction();//Sí se puede acceder a todas las variables ya que son globales
const helloWorld = () => {
globalVar = "im global";
};
helloWorld();
console.log(globalVar);
const anotherFuction = () => {
var localVar = globalVar = "Im Global";
};//Si se crea una variable sobre una variable también se puede acceder a ella
anotherFuction();
console.log(globalVar);
//🌎 ALCANCE GLOBAL (Global Scope) y REASIGNACION//VAR
var hello = "Hello"; // 🌎Puedo acceder a esta var desde cualquier parte// console.log(hello)
var hello = "Hello declaracion y reasignacion"; // 🌎 Puedo reasignar la var desde cualquier parte (solo var puede ser redeclarado y reasignado)//LET
let world = "Hello World";//let world = "Hello World declaracion y reasignacion" //❌ no puedo volver a declarar un let//console.log(world) //CONST
const helloWorld = "Hello World!";//const helloWorld = "Hello World! declaracion y reasignacion"; //❌ no puedo volver a decalarar ni reasignar un const
const anotherFunction = () => {
console.log(hello);
console.log(world);
console.log(helloWorld);
};
anotherFunction();//❌ Es mala practica no inicializar una variable en un bloque porque pasa a tener scope global
const helloWorld = () => {
globalVar = "im global";
};
helloWorld();
console.log(globalVar);
const anotherFunction = () => {
var localVar = (globalVar = "Im Global");
};
anotherFunction();
console.log(globalVar);
El Scope global, es cuando se definen las variables fuera de un bloque de código, funciones, etc. y pueden ser accedidas desde el bloque del código.
Con var se puede reasignar una variable, pero con let no.
Es mala práctica declarar variables sin las palabras reservadas var, let,const dentro de un bloque de código, estas variables serán consideradas como globales.
Como tip (lo más probable que el profesor lo mencione), es crear variables de forma local, esto quiere decir dentro de funciones y no de forma global, porque el control para esta variable se volverá difícil de trackear mientras el programa vaya creciendo.
Hola, por si a alguien le pasa, resulta que en algunas distros de linux vs code tiene un bug, y este es que si intentas dar click derecho en alguna parte de tu ventana dentro de vs code, este te seleccionará por automático la opción sobre la que esté el cursor, esto no lo sabía ya que no había tenido la necesidad de usar el click derecho hasta ahora con la extensión code runner. Esto solo pasa en vs code en algunas distros de linux, ni en mac ni en widows esto pasa.
Esto lo sé gracias a este link
De momento no he encontrado una solución, solo es para avisar por si te pasa que sepas que se trata de un error de vs code.
Encontré un pequeño error en lo que dice el profesor.
Él dice, que no se pueden reasignar las variables que son de tipo let y const, haciendo el siguiente ejemplo:
let world = "Hello world";
let world = "Hello";
Lo cual estaría mal el uso de palabras que uso y podría generar confusiones más adelante.
Si se puede reasignar un valor de una variable tipo let, de la siguiente manera:
let world = "Hello world";
world = "this is an another value";
Lo que creo que el profesor quiso decir, fue que no se puede declarar otra variable con el mismo nombre de una variable de tipo let o const que ya fue declarada.
Esto es lo que tengo entendido, si alguién tiene alguna información adicional o estoy equivocado, lo/a invito/a a que comente y generemos debate.
Si ah alguien le pasa lo de node descárguenlo para Windows y no mediante terminal almenos a mi mediante terminal no me sirvió … y después reinicien el computador… espero les sirva
Hasta ECMASCRIPT 5 las variables se declaraban con la palabra reservada var nombreVariable. La sentencia var tiene un ambito global y se le aplica el hoisting. Tiene las siguientes caracteristicas:
Se puede reinicializar.
Su valor es variable, por lo tanto, es reasignable.
Su alcance es global.
Las palabras reservadas const y let son las formas de declarar variables desde ECMASCRIPT 6, no se les aplica hoisting.
La sentencia const crea una variable de tipo constante, y tiene las siguientes características:
No se puede reinicializar.
Es inmutable, su valor no puede ser cambiado.
Son block-scoped, solo existe en el bloque en donde fue declarada.
La sentencia let declara una variable que puede ser modificada, tiene las siguientes caracteristicas:
No se puede reinicializar.
Su valor es mutable, puede cambiar.
Es block-scoped, solo existe en su contexto de ejecución.
Creo que con una buena estructuracion de codigo y nombres de variables, se evitara El scope, no he estado aun en un gran proyecto para entender porque sucede, pero se que lo estare, y debo estar preparado
Cuando el profesor dice que una variable let no puede ser asignada se refiere es que no puede ser declara nuevamene, es una error de conceptos, para tenerlo en cuenta para el examen o entrevista
//Puede declarar la variable de nuevo y asignar un nuevo valor, pero es una mala practica.var hello = "Hola var";
var hello = "Bye var";
// No podemos declararla por segunda vez, pero podemos asignar un nuevo valor.let letHello = "Let Hello";
letHello = "Bye let";
// No podemos declararla por segunda vez ni asignar un nuevo valor.const constHello = "Const Hello";
Por lo que veo en el video, lo mejor es usar siempre let y const y olvidarnos del var.
Así he venido trabajando desde hace un par de meses y no he necesitado el var para nada.
es la primera clase, pero me parece que Oscar tiene el timing y las expresiones perfectas para dar un curso de programacion, ojala sean mas cursos de su autoria los que esten en la ruta Backend de JS
/*
Scope es el alcance de las variables que estamos asignando
Cuando establecemos una variable con var podremos acceder a ella desde cualquier
Punto de la aplicacion porque esta asignada Globalmente
*/var hello = "hello";
console.log(hello);
let world = "Hello World";
const helloWorld = 'Hello world';
//Creamos una funcion para acceder a las variables// Podremos acceder a ellas en la funcion ya que estan definidas en Scope Globalconst anotherFunction = () => {
console.log(hello);
console.log(world);
console.log(helloWorld);
}
anotherFunction();
//Podremos reagsinar el valor de una variable solo con let o var
hello = "otra cosa";
world = "cambio xd";
console.log(hello);
console.log(world);
/*
Es una mala práctica crear una variable sin las palabras reservadas:
var, let y const.
Si se asigna una variable dentro de una función sin las palabras
reservadas será una variable global.
*/const helloWorld = () => {
globalVar = 'im global'
}
helloWorld();
console.log(globalVar); // podremos acceder a la variable//Doble asignacion de una variable es mala practicaconst anotherFunction = () => {
var localVar = globalVar = 'Im Global'
}```
Scope: Es el que se encarga de a que bloque de codigo va acceder una variables.
Local Scope:permite acceder a una variable solamente en este bloque de codigo.
let persona= ()=>{
//local scope
let nombre='victor';return nombre;}//global scope//la variabe nombre esta definida en la funcion osea que se accede a la funcion persona para imprimir la variable
console.log(persona());//este codigo da error por que la variable no esta definida en global scope
console.log(nombre);
Global Scope:el global scope tiene alcance directo a las variables o funciones ya que no se declaran adentro de bloques de codigo.
//Global scope
let numero=18;
//Se accede directamente ala variable ya que se declara enelglobal scope
console.log(numero);
Ambito Lexico: Cuando yo declaro dos variables del mismo tipo las llamo de forma igual como estas pueden convivir en el codigo sin modificar una a la otra, gracias al ambito lexico esto se refiere a que las dos variables pueden convivir en el mismo codigo si una esta declarada en un ambito diferente de la otra.
//Global scopelet nombre='victor';
functionpersona() {
//local scopelet nombre='carlos';
return nombre;
}
//imprimira la variable que esta declarada en global scopeconsole.log(nombre);
//imprimira la varible declarada en local scope console.log(persona());
//las dos variables conviven juntas pero en dos ambitos diferentes
El Scope se define como el alcance que tendrá una variable dentro del código. En otras palabras, el Scope se encargará de decidir a qué bloques de códigos va a acceder una variable.
Si declaramos una variable con var al inicio de un archivo y esta no está dentro de ninguna función o bloque, será una variable con scope global. Con el scope global podemos acceder a las variables dentro de funciones.
Si declaramos una variable con var, esta puede ser re declarada sin ningún error
Mientras que si intentamos esto mismo pero con let y const, nos lanzará un error, ya que las variables declaradas de esta manera no pueden ser reasignadas.
Tanto la re declaración de variables como la creación de variables globales dentro de funciones o bloques es considerado una mala práctica.
Es el alcance que tiene una variable dentro del código, define a los bloques de código a los que tendrá acceso una variable.
El scope tiene dos definiciones global y local
Global scope
La variables globales son a las que se puede acceder desde cualquier parte durante la ejecución de nuestro código, estas variables no se encuentran definidas dentro de funciones o bloques.
las variables pueden ser declaradas con las palabras reservadas var, let y const
var: nos permite declarar variables y su valor puede cambiar durante el tiempo de ejecución. Se puede re asignar una variable volviéndola a declarar, esto es una mala práctica.
let: nos permite declarar variables y su valor puede cambiar durante el tiempo de ejecución. No se puede re asignar una variable volviéndola a declarar, esto genera un error.
const: nos permite declarar variables y su valor no puede cambiar durante el tiempo de ejecución. No se puede re asignar una variable volviéndola a declarar, esto genera un error.
Una mala práctica es establecer variables dentro de una función sin utilizar las palabras reservadas para su declaración lo que las vuelve globales.
// Global Scope
var hello = "Hello";
// var hello = "Hello +";
let world = "Hello World";
// let world = "Hello +";
const helloWorld = "Hello World!";
const anotherFunction = () => {
console.log(hello);
console.log(world);
console.log(helloWorld);
};
anotherFunction();
// Bad practice declaring global vars
const helloWorldBadPractice = () => {
globalVar = "I'm global.";
};
helloWorldBadPractice();
console.log(globalVar);
const anotherFunctionBadPractice = () => {
var localVar = (globalVar = "I'm global.");
};
anotherFunctionBadPractice();
console.log(globalVar);
Usar siempre const a menos que debas modificar el contenido de la variable entonces usa let
Var esta ahí para el código que se hacia antes pero que con el avance de javascript (2020) let y const son soportados en todos los entornos principales.
El scope es el que se encarga de decidir a que bloques de codigo puede acceder una variable.
Existe el scope local y el scope global
El scope global nos permite acceder a las variables que son definidas en ese scope global, como pueden ser variables que fueron definidas fuera de funciones
ej:
var hello = "Hello";
let world = "Hello World";
const helloWorld = "Hello World!"const anotherFunction = ()=>{
console.log(hello)
console.log(world)
console.log(helloWorld)
}
anotherFunction()
Algo a tomar en encuenta es que de las tres variables que creamos, solo la variable var pueder ser reasignado
ej:
var hola = 'hola'var hola = 'hi'
y eso no nos dara ningun error, ya que var nos permite hacer eso.
Una mala practica al momento de desarrollar es que podemos crear varibles globales dentro del scope de una funcion.
const globalVar = () =>{
test = 'hola';
}
// ejecutamos la funcion
globalVar();
// hacemos un console log de la variable que creamos dentro de la funcionconsole.log(test);
// pinta el 'hola'
Es bueno entender estos conceptos, ya que son muy frecuentes este tipo de malas prácticas, son problemas comunes, pero representan un problema a la larga
Tengo una duda veo que el profe en los ejemplos de globalVar en el primero una el mismo nombre de la variable const helloWorld y el segundo ejemplo usa el mismo nombre de la función anotherFunction y le funciona bien no le afecta con las anteriores. Yo lo hice asi y me sale un error y si les cambio el nombre si me funciona bien
Corrección: Con let no se puede volver a declarar una variable pero si se puede reasignar su valor. Es decir, solamente se puede usar "let var = ‘hello world’ " una sola vez. Con var se puede hacer más de una vez.
[Running] node “c:\Users\EQUIPO\OneDrive\Escritorio\platzi java\closures y scope\tempCodeRunnerFile.js”
“node” no se reconoce como un comando interno o externo,
programa o archivo por lotes ejecutable.
//MALAS PRACTICAS:// Declarar solo nombre de variables sin su tipo.
const helloWorlds = () => {
global = 'helloooo'
}
helloWorlds()
console.log(global)
// Declarar la variable dentro de la función dos veces:
const helloWorlds = () => {
var global1 = (globalVar = 'helloooo luis')
}
helloWorlds()
console.log(globalVar)
Necesito una aclaración!, entre 8:15 y 8:32 dice que solo var puede ser reasignada y que con let y const no vamos a poder asignar ningun valor a lo que ya hemos establecido!
Aclarenme, por que para mi let si deja reasignar valores, solo const es la que no!
var permite volver a declarar y reasignar una variable, let permite reasignar el valor de una variable pero no declararla de nuevo y const no permite que la variable sea reasignada o declarada de nuevo con excepción de objetos los cuales pueden ser mutados en sus propiedades aún si están declarados con const
Hola profe! hay un pequeño error… dice que no se puede reasignar, pero lo que no se puede es redeclarar… es decir si de puede asignar otro valor cuando se declara con var y con let lo que no se puede es volver a declarar una variable que ya fue declarada con let…
Scope: Es el alcance que tiene una variable, habitando dentro de una función o bloque. Es concretamente, quién permite a las variables acceder a funciones o bloques de código
Scope Global es donde habita todo, porque sencillamente no se encuentra en ningún bloque de código o función.
Variables var : pueden ser reasignadas, pero es una muy mala práctica.
Variables let | const : no pueden ser reasignadas, porque la palabra ya ha sido reservada
Variables dentro de una función : Si se define una variable sin alguno de los prefijos var, let o const , ésta variable será global
EL Scope hace referecia al lugar de validez de una variable. Podriamos decir que el scope es el alcance que determina la accesibilidad de las variables en cada parte de nuestro código.
Se define como el alcance que va a tener la variable dentro de nuestro codigo. Se encargara en decidir a que bloque de codigo accedera nuestra variable.
Hay dos formas, que son el Scope local y el Scope Global.
Si tenemos variables globales, queremos decir que cualquier funcion desde cualquier parte en nuestro codigo, puede acceder a estas y utilizarlas.
Es una mala practica cuando nosotros tenemos alguna variable tipo var y las reasignamos en su valor, en el caso de let y const esto nos marca un error.
Es una mala practica el hecho de declarar variables sin las palabras reservadas . La doble asignacion de variables al igual es una mala practica.
Global Scope: Una variable se encuentra en el Global Scope cuando son definidas fuera de una funciones o bloques de código, entonces podemos acceder a ellas desde cualquier parte del código.
// var puede ser reasignado en scope functionconesasintaxis
// si la reasignamos sinel'var'se reasigna global
var chao = 'chao'
const bye = () => {
var chao = 'buenas noches'
console.log(chao)
}
bye()
console.log(chao)
// al igal que var, let puede ser reasignada, si se agrega 'let'
// solo reasigna enfunctionscope, siessinletglobalscopelet hola = 'hola'
const hello = () => {
hola = 'como estas'
console.log(hola)
}
hello()
console.log(hola)
Variables o constates que pueden ser consultadas a los largo del app son globales, pero las que declaramos en una función son locales y solo se pueden ser consultadas mientras la función viva.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?