December 28, 2023

Динамические функции

В данном скрипте происходит определение функции createDynamicFunction, которая принимает код в виде строки в качестве аргумента. Далее создается динамическая функция на основе переданного кода с помощью конструктора Function и возвращается из функции createDynamicFunction. В случае возникновения ошибки, обработка и вывод сообщения выполняются в блоке catch.

Затем в основной части скрипта создается корректный код для динамической функции correctCode, вызывается функция createDynamicFunction с этим кодом, и результат сохраняется в переменной Summator. Далее создается объект FlyFunctions, в который добавляется ссылка на динамическую функцию под именем "myNewDynamicFunction". И в конце концов вызывается функция myNewDynamicFunction через объект FlyFunctions с аргументами 2 и 2, что возвращает ожидаемый результат 4.

Таким образом, данный скрипт демонстрирует создание динамической функции на основе переданного кода и ее вызов через объект с сохраненной ссылкой на функцию.

function createDynamicFunction(code) {
    try {
        const FlyFunction = new Function('a', 'b', code);
        return FlyFunction;
    } catch (error) {
        if (error instanceof SyntaxError) {
            console.error('Ошибка при создании динамической функции:', error);
        } else {
            throw error;
        }
        return null;
    }
}

const correctCode = 'return a + b;';
const Summator = createDynamicFunction(correctCode);

const FlyFunctions = { myNewDynamicFunction: Summator };
console.log(FlyFunctions.myNewDynamicFunction(2, 2)); // Выведет: 4