December 8, 2023

Очень динамическая функция

Динамически определяем:

  • название функции
  • неопределенное количество аргументов
  • тело функции.
// Определяем имя функции, которое будет динамически изменяться
var dynamicName = 'dynamicFunction';

// Задаем содержимое тела функции в виде строки
var functionBody = `
  console.log(\`Результат \${args}\`); // Выводим результат в консоль
`;

// Создаем строку функции, добавляя новый функционал
const functionString = `
function ${dynamicName}(...args) { // Определяем функцию с динамическим именем и аргументами
  ${functionBody} // Вставляем содержимое тела функции
}`;

// Определяем функцию с динамическим именем, используя eval()
eval(functionString);

// Вызов функции
dynamicFunction('а', 'а'); // Вызываем функцию с передачей аргументов

Добавим сохранение новой функции в файл

const fs = require('fs');

// Определяем имя функции, которое будет динамически изменяться
var dynamicName = 'dynamicFunction';

// Задаем содержимое тела функции в виде строки
var functionBody = `
  console.log(\`Результат \${args}\`); // Выводим результат в консоль
`;

// Создаем строку функции, добавляя новый функционал
const functionString = `
function ${dynamicName}(...args) { // Определяем функцию с динамическим именем и аргументами
  ${functionBody} // Вставляем содержимое тела функции
}`;

// Определяем путь и имя файла для сохранения функции
const filePath = './dynamicFunction.js';

// Сохраняем функцию в файл
fs.writeFileSync(filePath, functionString);

// Проверяем, успешно ли сохранен файл
if (fs.existsSync(filePath)) {
  console.log('Файл успешно сохранен!');
} else {
  console.log('Ошибка при сохранении файла.');
}

// Вызов функции
dynamicFunction('а', 'а'); // Вызываем функцию с передачей аргументов