Funciones anidadas de JavaScript

Funciones anidadas de JavaScript

Las funciones anidadas de JavaScript son los tipos de funciones definidas en otra función. Se pueden agregar una o más funciones dentro de una función, y el alcance de las funciones externas incluye estas funciones anidadas o internas. Las funciones externas también se denominan funciones de los padres, y las funciones internas pueden nombrarse como funciones infantiles en las funciones anidadas de JavaScript. Las variables y los parámetros de la función principal son accesibles para la función infantil, mientras que la función principal no puede acceder a las variables declaradas dentro de las funciones del niño.

Este artículo discutió las funciones anidadas de JavaScript. Además, también hemos explicado el alcance variable, los parámetros y las declaraciones de retorno de las funciones anidadas con la ayuda de los ejemplos.

Funciones anidadas de JavaScript

En JavaScript, una función anidada es una función que se define dentro o dentro de otra función. El procedimiento para crear una función anidada es el mismo que seguimos para la función normal, pero para crear una función anidada, tenemos que definir la función nueva o de los hijos dentro de la función principal.

Aquí está el Sintaxis de funciones anidadas de JavaScript:

Función ParentFunction () // Definición de funciones

Función ChildFunction () // Definición de funciones

// Cuerpo de la función infantil

ChildFunction (); // CALLE

parentFunction (); // Función principal llamando

Como puede ver en la sintaxis, tenemos que definir la función infantil () dentro de la función parent (). Además, cuando queremos invocar la función infantil (), tenemos que llamarlo dentro del cuerpo de la función parent ().

Ejemplo: Uso de funciones anidadas de JavaScript

Este ejemplo le mostrará cómo crear funciones anidadas de JavaScript. Para este propósito, definiremos una función principal llamada "addnum ()", Que tiene dos parámetros", "X" y "Y". Después de hacerlo, crearemos una función infantil "Mostrar mensaje()"Que imprime un mensaje de texto en la ventana de la consola:

función addnum (x, y)

// función anidada
función showMessage (texto)

consola.log (texto);

Sum = x+y;
// Invocar la función anidada
showMessage ("suma es"+ suma)

Tenga en cuenta que hemos llamado el "Mostrar mensaje()"Función dentro de la definición de función del"addnum ()" función. En el siguiente paso, llamaremos a la función principal addnum () mientras pasan "5" y "6"Como argumentos:

Addnum (5,6)

Como puede ver en la salida, hemos ejecutado con éxito las funciones anidadas de nuestro ejemplo:

Alcance variable de funciones anidadas de JavaScript

Ahora, hablemos sobre el alcance de las funciones anidadas en JavaScript. Las funciones anidadas tienen su propio alcance; Sin embargo, también pueden acceder al alcance de la función principal o externa. Debe tener en cuenta dos puntos sobre el alcance variable de las funciones anidadas de JavaScript: una función anidada es privada para su función principal, y una función anidada tiene acceso al alcance de la función principal.

Explicaremos cada una de las declaraciones dadas con la ayuda de ejemplos.

Como hemos dicho, la función anidada se considera "privado"Para la función que contiene su definición. Significa que solo el padre o la función de contenido pueden acceder a la función anidada, y no se le permitirá acceder a ella fuera de la función especificada. Esto sucede porque hemos definido la función interna dentro del alcance de la función exterior.

Por ejemplo, hemos definido una función exterior "Añade un número()"En el código dado a continuación y luego agregó la función interna"Mostrar mensaje()"Dentro de la definición de la función exterior:

función addNumber (x, y)

función showMessage (texto)

consola.log (texto);

Sum = x+y;
showMessage ("suma es" + suma)

Ahora, cuando intentamos acceder a la función interna "Mostrar mensaje()"Fuera de su alcance, arrojará el"Referenceerror no capturado" error:

showMessage ('20 ');

Se pueden acceder a todas las funciones, variables y argumentos definidos en la función exterior a la función anidada creada. Esta habilidad se conoce como "alcance léxico", donde la función interna puede acceder al alcance de la función principal o exterior.

No aprobaremos ningún argumento a nuestra función interna ShowMessage () en el ejemplo dado a continuación. Lo que haremos es utilizar los argumentos "X" y "Y" de nuestro "Añade un número()"Función externa y la"suma" variable:

función addNumber (x, y)

función showMessage ()

consola.log ('suma de %d + %d es %d', x, y, suma);

Sum = x+y;
Mostrar mensaje()

Ahora, invocaremos la función exterior "Añade un número()"Y pasa el"4" y "6"Como argumentos:

AddNumber (4,6)

Eche un vistazo a la salida dada a continuación, que significa que hemos accedido con éxito el "suma" variable, "X", y "Y"Argumento de la función exterior addNumber en la función showMessage ():

Devolver una función anidada de JavaScript

La función exterior tiene la capacidad de devolver la función anidada. Por ejemplo, en el ejemplo dado a continuación, la función DisplayCounter () tiene un "contar"Variable y devuelve la función interna increment ():

función displayCounter ()
Dejar contar = 0;
increment = function ()
return ++ Count;
;
incremento de devolución;

Almacenaremos la función DisplayCounter () en el "encimera"En el siguiente paso. Ahora el concepto que debemos discutir aquí es que el "incremento()"La función aún tendrá acceso al"contar"Propiedad del"DisplayCounter ()Función "cuando displayCounter () terminó la ejecución. "Cierre", Una característica de JavaScript, lo hace posible.

Aquí el "contar"La propiedad es local para el"DisplayCounter ()"Función, sin embargo, la definida"incremento"La función también puede acceder a ella porque está anidada dentro del"DisplayCounter ()" función:

Counter = DisplayCounter ()

El código dado anteriormente llamará el "DisplayCounter ()" función. Luego, la función DisplayCounter () primero inicializará el "contar"Variable al"0"Valor y luego devuelve el"incremento()" función. Porque el "contar"La propiedad no se destruye, cuando llamaremos a la función de incremento a través del"encimera()", Cada vez el"contarLa propiedad se incrementará de acuerdo con el código agregado:

consola.log (contador ());
consola.log (contador ());
consola.log (contador ());

Consulte la salida dada a continuación del ejemplo proporcionado:

Parámetros de las funciones anidadas de JavaScript

La función interna también puede tomar argumentos. Por ejemplo, en el siguiente ejemplo, el "InnerFunction ()"Es devuelto por el"FUNCIÓN OUTERA ()"Y cada uno de ellos acepta un argumento establecido:

función externa (x)
innerFunction = function (y)
consola.log ("x %d y %d", x, y)
;
return Innerfunction;

Para obtener el InnerFunction (), Agregaremos el siguiente código en nuestro programa JavaScript mientras pase "3"Como argumento para el FUNCIÓN OUTERA ():

InnerFunction = OuterFunction (3);

Luego, invocaremos el InnerFunction () con valor "7"Como argumento:

Interfuncia (7);

También puede aprobar los argumentos para funciones externas e internas a la vez:

Funciones exteriores (2) (3);

Ambas líneas especificadas del código invocaron el Interfunction () y emitieron los argumentos aprobados:

Conclusión

JavaScript le permite usar funciones anidadas en el programa sin encontrar errores. Se puede agregar una función infantil o interna dentro de una función exterior en JavaScript. Todas las variables globales locales de la función exterior son accesibles para la función interna. En el caso de la función exterior, solo son accesibles los valores de propiedades globales y los métodos y variables definidas en las funciones principales. Este artículo discutió las funciones anidadas de JavaScript. Además, también hemos explicado el alcance variable, la propiedad de cierre, el alcance léxico, los parámetros y las declaraciones de retorno de las funciones anidadas de JavaScript, con la ayuda de los ejemplos.