▶️Итак, если коротко, то для того чтобы выполнить JavaScript-код, записанный в виде строки, можно воспользоваться функцией
eval():eval("alert('Выполнено!');"); В результате появится всплывающее окно с текстом "Выполнено!".
Но будьте осторожны: функция
eval() может выполнить любой скрипт, который ей будет предоставлен.Функция
eval() обладает большими рисками для безопасности. Важно убедиться в том, что JavaScript-строка правильно обработана перед ее использованием в eval(), так как инъекции кода могут иметь серьезные последствия.Альтернативы для запуска строк JavaScript
▶️Использование функции конструктора `Function`
let func = new Function("return 'Привет, мир!';");
func(); // Привет, мир!Этот метод умеет обходить внешний контекст.
▶️Модуль `vm` в Node.js
В Node.js существует модуль
vm, который предоставляет отдельный контекст для выполнения JavaScript-строк.const vm = require('vm');
const script = new vm.Script("console.log('Привет из VM');");
script.runInThisContext(); // Привет из VM▶️Безопасное выполнение с помощью `vm2` в Node.js
vm2 предоставляет ограниченное окружение для запуска ненадежного кода.const { VM } = require('vm2');
const vm = new VM();
vm.run("console.log('Выполнение в песочнице');"); // Выполнение в песочницеНе забудьте следить за обновлениями в части безопасности и обратите внимание на устаревшие API в
vm2, чтобы избежать проблем.▶️Запуск скриптов с помощью jQuery
Ни одна замена не сможет заменить добрые старые теги
<script>, которые можно использовать для запуска JavaScript-строк с помощью jQuery.let code = "$('body').append('<p>Привет от jQuery!</p>');";
$('<script>').attr('type', 'text/javascript').text(code).appendTo('body'); // Привет от jQuery!@javascriptv
