Мне нужно создать функцию с переменным числом параметров с помощью конструктора new Function()
. Что-то вроде этого:
args = ['a', 'b'];
body = 'return(a + b);';
myFunc = new Function(args, body);
Можно ли сделать это без eval()
?
Большое спасибо, ребята! На самом деле, a + b не был моей главной задачей. Я работаю над кодом, который будет обрабатывать и расширять шаблоны, и мне нужно было передать неизвестное (и переменное) количество аргументов в функцию, чтобы они были введены как локальные переменные.
Например, если шаблон содержит:
<span> =a </span>
Мне нужно вывести значение параметра a
. То есть, если пользователь объявляет функцию расширения как
var expand = tplCompile('template', a, b, c)
а затем вызывает
expand(4, 2, 1)
Мне нужно заменить =a
на 4
. И да, я хорошо знаю, чем функция похожа на eval()
и работает очень медленно, но у меня нет другого выбора.