¿Qué son el alcance y el cierre en JavaScript??

¿Qué son el alcance y el cierre en JavaScript??
Cuando inicie JavaScript por primera vez, es posible que se haya encontrado con el alcance y los cierres. Estos son conceptos muy importantes para aprender para un principiante. Incluso en entrevistas, el entrevistador pregunta sobre los cierres.Hoy vamos a discutir qué es el alcance y cuáles son los conceptos básicos de alcance en JavaScript. Después de haber discutido el alcance, iremos hacia el cierre y discutiremos eso. Al final de este artículo, tendrá conocimiento de los ámbitos y el cierre en JavaScript.

Antes de comenzar, le sugiero que no salte directamente al cierre sin comprender el alcance. La razón de esto es que para el concepto de cierre, comprender el concepto de alcance es muy importante.

Alcance

Las variables a las que tiene acceso es el alcance de esa variable y se divide en dos partes:

Alcance global

Si se puede acceder a una variable en todo el programa, tiene alcance global. En otras palabras, podemos decir que si una variable está fuera de todas las funciones y aparatos rizados, es una variable global y tiene un alcance global.

Un ejemplo de alcance global en JavaScript es:

const globalName = "John Cena";

Ahora que hemos declarado la variable con el nombre GlobalName, podemos obtener su valor en cualquier parte del código, incluidas las funciones/métodos.

Por ejemplo:

//variable global
const globalName = "John Cena";
// Funcionar con el nombre de Greet
function greet ()
consola.log ("Hola", GlobalName);

// llamando a la función saludar
saludar();
// Acceder a la función de la variable global nuevamente
consola.log ("Hola de nuevo", GlobalName);

En este ejemplo, primero, iniciamos una variable con el nombre de nombre global. Después de eso, construimos una función en la que saludamos el nombre global. Luego llamamos a la función con esta declaración saludar(). Después de esto, nosotros consola.registro el nombre global variable para ver si es accesible fuera de la función o no. La salida que se muestra en la consola es:

Sin embargo, debe tenerse en cuenta que la mayoría de los programadores no recomiendan declarar una variable a nivel mundial porque existe el riesgo de nombres de variables duplicados mientras lo hacen. Los nombres de variables duplicados se producen cuando dos variables tienen el mismo nombre. En la mayoría de los casos, esto causará un error que será difícil de depurar.

Alcance local

Como su nombre indica, una variable local tiene un alcance local. Eso significa que solo es accesible dentro de una función/método o bloque de código. Fuera de esa área, no es accesible y JavaScript generará un error. El alcance local en JavaScript se divide en dos tipos.

Alcance de la función

Si se declara una variable dentro de una función, solo será accesible dentro de esa función y no será accesible fuera de ella.

Por ejemplo:

// Funcionar con el nombre de Greet
function greet ()
//variable local
const localname = "Randy Orton";
consola.log ("hola", localname);

// llamando a la función saludar
saludar();
// Acceder a la variable local nuevamente la función exterior
// Esto generará un error
consola.log ("Hola de nuevo", LocalName);

En este ejemplo, iniciamos un nombre local variable y luego consola.registrarlo. Esto nos mostrará la salida de "Randy Orton" En el registro de la consola. Sin embargo, cuando nos consolamos.Registre la variable local en la última línea, generará un error.

Producción:

Alcance

El alcance del bloque nos dice que si declaramos una variable dentro de los soportes rizados, esos soportes rizados serán su alcance. Que se llama alcance de bloque. No se puede acceder a la variable de alcance del bloque fuera de los aparatos ortopédicos rizados.

Por ejemplo:


const name = "Rey Mysterio";
consola.log ("hola", nombre);

En este ejemplo, declaramos una variable que tiene alcance de bloque, ya que está dentro de la abrazadera rizada. Lo registramos después de la consola después.

La salida de "Hola Rey Mysterio" se ve en el registro de la consola. Sin embargo, cuando lo registramos, lo registramos fuera de los aparatos ortopédicos, se generará un error.

¿Acciona la función de otro alcance de la función??

Como ya discutimos el alcance de la función, arrojemos algo de luz sobre la pregunta de si dos funciones comparten un alcance o no. La respuesta es no, si declaramos una variable en una función e intentamos acceder a ella en otra función, no será accesible.

Por ejemplo:

función firstMessage ()
const mensaje = "soy la primera función";
consola.log ("Acceso desde la primera función:", mensaje);

función SecondMessage ()
primer mensaje();
consola.log ("Acceso desde la segunda función", mensaje);

segundoMessage ();

En este ejemplo, construimos una función con el nombre de FirstMessage y declaramos una variable, después de lo cual consolamos.registrarlo. Después de eso, construimos una segunda variable y llamamos la función FirstMessage (). Funcionará bien y podremos ver el mensaje de la consola desde la función FirstMessage (). Sin embargo, cuando intentamos acceder al mensaje variable desde la función FirstMessage () en la función SecondMessage (), veremos un error.

Este error se resuelve mediante cierres.

¿Qué es el cierre en JavaScript??

Si alguna vez ha creado una función dentro de otra función, básicamente ha creado un cierre. La función interna se llama cierre y una definición más técnica sería que una función que tiene acceso al alcance de la función principal, incluso cuando la función principal se ha cerrado, se llama un cierre.

Discutamos un ejemplo de un cierre:

función parentFunc ()
Let NameParent = "Parent";
consola.log (nameParent);
function childFunc ()
consola.log ("Child and", NameParent);

regresar Child -Func;

const store = parentFunc ();
consola.registro (tienda);
almacenar();

En este ejemplo, construimos un parentfunc e inició una variable nameparent. Después de eso, consolamos.Registre el NameParent y construyó una segunda función dentro de la función principal I-E Childfunc. En esta función infantil, consola registrar una cadena "niño y" con la variable nameParent. Podemos ver que ParentFunc devuelve el infantil. Ahora, cuando llamemos, el registro de la consola ParentFunc nos mostrará solo el NameParent. El infantil no fue llamado y no entró en acción. Sin embargo, la función exterior y interna se almacena dentro del almacén de variables. Cuando consolemos registrar la tienda, veremos ambas funciones. Cuando llamamos al almacenar(), De hecho, estamos llamando a la función interna o la función anónima que es chidfunc dentro del parentfunc (). Ahora, veremos la consola de funciones interiores.Registro I-E "Niño y padre",

El cierre que creamos también nos permite usar el alcance del PadreFunc.

Conclusión

En este artículo, discutimos los conceptos de alcance y cierre y en alcance, discutimos los dos tipos principales de alcance que son: alcance global y alcance local. Además en el alcance local, discutimos el alcance funcional y los ámbitos de bloqueo junto con los ejemplos. Después de eso, nos topamos con un problema que tiene acceso a otro alcance de la función. Resolvimos esto utilizando el cierre de discusión junto con ejemplos.