JavaScript

Tres métodos para crear una función desde una cadena de texto en JavaScript

En ciertas ocasiones puede ser necesario crear funciones a partir de una cadena de texto. Permitiendo así añadir nuevas funcionalidades al código sin necesidad de modificar el programa original. Algo que puede ser un problema de seguridad debido a que se podría ejecutar cualquier código, pero aún así puede ser útil. A continuación, se van a presentar tres métodos para crear una función desde una cadena de texto en JavaScript.

Los métodos expuestos en esta entrada solamente se deben utilizar cuando sea estrictamente necesario. Cuando no exista otra alternativa mejor para implementar la funcionalidad. El uso tanto de eval como Function presentan serios problemas de seguridad ya que en ambos casos se facilita la inyección de cualquier código que puede alterar el correcto funcionamiento del programa. Incrementa el tiempo de ejecución debido a que el código no se puede optimizar. Además, hace que sea más complicada la depuración de los programas.

Utilización de la función eval

La función eval de JavaScript permite ejecutar el contenido de las cadenas de texto como si fuese una línea más del programa. Pudiendo modificar las variables. Por lo que un método con el que se pueden funciones en tiempo de ejecución. Así para crear una función que pueda sumar dos números se puede utilizar.

eval('var fun = function (a, b) { return a + b; }')

Mediante lo que se creará una nueva función llamada fun que implementa la suma de dos números.

El constructor Function

Otra forma con la que se puede crear código a partir de una cadena de texto es mediante el constructor Function. Tal como indica su nombre permite construir objetos tipo función, siendo sus parámetros son los parámetros y el cuerpo de la nueva función. Así, para crear una función que sume dos valores se puede hacer con la siguiente línea de código.

var fun = new Function('a', 'b', 'return a + b;');

Al igual que en el caso anterior se puede crear una función con cualquier código.

El constructor Function más la palabra clave return

El constructor Function también permite construir funciones utilizando return antes de llamar a una función. Así en el caso de que se tenga la función completa en una variable se puede crear la función con este constructor.

var func = new Function('return' + 'function (a, b) { return a + b; }')();

Nótese que en esta ocasión al finalizar el código se incluye dos paréntesis para guardar la función en la variable.

Conclusiones

En esta entrada se han visto tres métodos para crear una función desde una cadena de texto en JavaScript. Lo que permite incluir la posibilidad de modificar el funcionamiento de los programas sin modificar el código. Aún así estos deberían ser básicamente una curiosidad, ya que su utilización produce programas con problemas de seguridad y difíciles de depurar.

Imágenes: Pixabay (Free-Photos)

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez

Recent Posts

Curiosidad: El puerto 80 y los números de puerto

Durante décadas, cuando escribías una dirección web y pulsabas Intro, tu navegador hacía algo que…

2 días ago

Cómo Proyectar Cuándo Alcanzarás la Independencia Financiera

La independencia financiera es el punto en el que tus inversiones generan suficientes rendimientos para…

4 días ago

Cómo Elegir el Test de Hipótesis Correcto para tus Datos

Tienes dos grupos de datos y quieres saber si son estadísticamente distintos. O tienes una…

1 semana ago

Tuplas vs Listas en Python: parecen lo mismo, pero no

A primera vista, tuplas y listas son casi idénticas. Ambas guardan colecciones ordenadas de elementos.…

2 semanas ago

Qué significa realmente “calidad de datos”

"Nuestros datos no tienen buena calidad." Escuchas esto constantemente en reuniones. El problema es que…

2 semanas ago

Cómo Detectar Pseudo-IDs y Data Leakage en el Constructor de Scorecards

El artículo Data Leakage en Credit Scoring explicó por qué este es el error más…

3 semanas ago

This website uses cookies.