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

DBSCAN y la selección de ε: teoría, intuición y aplicación práctica

Cuando hablamos de clustering, lo primero que viene a la mente suele ser k-means. Pero…

20 horas ago

El bestiario de los indicadores económicos absurdos: El zoo patrio

Cualquier país desarrollado tiene sus propios indicadores folclóricos. España, por motivos que tienen mucho que…

6 días ago

Por qué el banco te ofrece un 3% TAE y no es lo que parece

Entras a la web de tu banco. En la página principal, un banner llamativo: “Depósito…

1 semana ago

Analytics Lane lanza la versión 1.3 del laboratorio con nuevas herramientas de evaluación de modelos y utilidades prácticas

Seguimos ampliando el laboratorio de Analytics Lane con el lanzamiento de la versión 1.3, disponible…

2 semanas ago

Augurios deportivos y portadas malditas, o cuando The Economist predice mejor al revés – El bestiario de los indicadores económicos absurdos (parte 3)

Cerramos la serie internacional con la categoría más estrambótica de todas: indicadores que predicen el…

2 semanas ago

El Binning en Credit Scoring: El Arte de Discretizar Variables

Si el WOE y el IV son la base matemática del credit scoring, el binning…

2 semanas ago

This website uses cookies.