Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как из строки преобразовать в другой тип данных Javascript

Timavideoo Даутов Ученик (135), открыт 1 день назад
Работаю в Javascript на клиентской стороне и у меня есть функция не важно какая. Я добавляю её в sessionStorage она сохраняется как строка как можно мне её конвертировать обратно в функцию в строковом типе данных она выглядит примерно вот так "function pow(a, b){ return a**b }" кавычки стоят не просто так они указывают на тип данных string как мне теперь обратно её в функцию сделать?
3 ответа
Стас Пацына Мастер (1706) 1 день назад
const functionString = "function pow(a, b){ return a**b }";

// Извлекаем параметры и тело функции из строки
const match = functionString.match(/function\s*([^\s(]*)\s*\((.*?)\)\s*\{(.*)\}/s);

if (match) {
const functionName = match[1]; // Может быть пустой строкой, если функция анонимная
const functionParams = match[2].split(',').map(param => param.trim());
const functionBody = match[3].trim();

const pow = new Function(...functionParams, functionBody);

console.log(pow(2, 3)); // Вывод: 8
} else {
console.error("Invalid function string");
}
Vladislav Pavlov Ученик (118) 1 день назад
Для явного преобразования в простые типы (в строку, в число или в логическое значение) можно воспользоваться одноимёнными функциями: String(), Number(), Boolean().

Для преобразования в строку используется метод toString().

Для преобразования в число — функция Number() или оператор унарного плюса +.

Для преобразования в логическое значение — функция Boolean().

Также для явного преобразования можно использовать операторы вместо функций. Например, если один из операндов оператора + является строкой, то другой операнд также преобразуется в строку
Андрей Высший разум (475144) 1 день назад
Не надо сохранять функции в хранилище. Совсем не надо. Если тебе понадобилось сохранять функцию, значит ты делаешь что-то не то. Любая задача может быть решена без подобных извращений.

Но если тебе всё же нужно создать функцию, текст которой записан в строке, то проще всего сделать это так:
 eval("function pow(a, b){ return a**b }"); 
Похожие вопросы