Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+3

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

Работаю в Javascript на клиентской стороне и у меня есть функция не важно какая. Я добавляю её в sessionStorage она сохраняется как строка как можно мне её конвертировать обратно в функцию в строковом типе данных она выглядит примерно вот так "function pow(a, b){ return a**b }" кавычки стоят не просто так они указывают на тип данных string как мне теперь обратно её в функцию сделать?

По дате
По рейтингу
Аватар пользователя
Новичок
4мес

Для явного преобразования в простые типы (в строку, в число или в логическое значение) можно воспользоваться одноимёнными функциями: String(), Number(), Boolean().

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

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

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

Также для явного преобразования можно использовать операторы вместо функций. Например, если один из операндов оператора + является строкой, то другой операнд также преобразуется в строку

Аватар пользователя
Высший разум
4мес

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

Но если тебе всё же нужно создать функцию, текст которой записан в строке, то проще всего сделать это так:

1
 eval("function pow(a, b){ return a**b }"); 
Аватар пользователя
Мастер
4мес

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");
}