Necesito crear una función con un número variable de parámetros usando el constructor new Function()
. Algo como esto:nueva Función() con parámetros variables
args = ['a', 'b'];
body = 'return(a + b);';
myFunc = new Function(args, body);
¿Es posible hacerlo sin eval()
?
Muchas gracias, muchachos! En realidad, a + b no era mi principal preocupación. Estoy trabajando en un código que procesaría y expandiría plantillas y necesitaba pasar una cantidad desconocida (y variable) de argumentos a la función para que se introdujeran como variables locales.
Por ejemplo, si una plantilla contiene:
<span> =a </span>
necesito a la salida el valor del parámetro a
. Es decir, si el usuario declara función de la ampliación como
var expand = tplCompile('template', a, b, c)
y luego llama
expand(4, 2, 1)
Necesito sustituir =a
con 4
. Y sí, soy consciente de que Function es similar a eval()
y funciona muy lento, pero no tengo otra opción.
¿Por qué no recorrer la matriz? Probablemente haya una mejor manera de hacer lo que sea que intentes hacer. –
Me temo que no se puede evitar la evaluación cuando intentas evaluar el texto puro como código. –
Hay mejores formas de hacerlo. Si absolutamente debe usar 'new Function()', eso suena como una tarea de tarea. En ese caso, el instructor te está enseñando cómo hacer las cosas de la manera incorrecta. – darioo