upd: Какой вариант лучше использовать для запуска js кода с сервера, например?
var codeRun = "console.log('now run code')";
//Which code is better?
//run function
console.log('new Function:');
(new Function(codeRun))();
//or eval
console.log('eval:');
eval(codeRun);
да тут обоими способами опасность одинаковая. все равно ответ с сервера превращается в исполнемый код, и если уж его подменили, то не важно eval там, или любой другой способ запустить код.
Если есть проверка входящих данных, то можете использовать любой из вариантов — они идентичны. В этом случае не обращайте внимание на эту паранойю вокруг безопасности данных процедур.
Если у Вас нет проверки входящих данных, то лучше не использовать эти способы. В этом случае надо ещё хорошо подумать о том, на сколько Вы хороший программист.
Достичь выигрыша в скорости и безопасности можно только перейдя на методы call и aplly, но структура передаваемых данных будет гораздо сложнее.