Да на здоровье, но если вы таким образом определяете действия на клиенте, то одновременно определяете и потенциальную уязвимость его. Конечно же самому себе вы не собираетесь вредить, а вот через такую "дыру" могут вредить другие.
Почему бы не определить функции на клиенте, запуск которых и параметры для которых может определять сервер в зависимости от задач или условий? Сервер возвращает имя функции/функций и ее/их параметров переданных как json:
//определенные функции
const exe = {
a:function([...a]) {
console.log(a)
},
b:function(a) {
console.log(a)
}
};
//ответ сервера в формате json после декодирования
let o = {
"fn": {
"a": [1,2,3],
"b": 5,
"d": 44 //а это лажа, такого не определено, ничего не произойдет
}
};
//запуск имеющихся функций
if(o.fn) { //если в ответе севера определен запуск функций
for(let f in o.fn) exe[f] && exe[f](o.fn[f]) //если определено, запускаем
}