@b4rbos
web

Как заменить eval?

как можно преобразовать строковое выражение не используя eval()?
допустим, получаю из инпута строку тип "2+1".если перевести ее в number -получается null.а если только '2' и '1' ,оператор останется все равно строкой. не могу сообразить , как можно сделать перевод без eval.
  • Вопрос задан
  • 101 просмотр
Решения вопроса 1
Aetae
@Aetae Куратор тега JavaScript
Тлен
По сути тебе нужно написать свой языковой парсер. Который разобьёт входные значения на лексемы и всё такое прочее и интерпретирует результат. Можешь изучить теорию компиляторов, чтоб совсем хорошо было.)
Но вообще тут и простого конечного автомата хватит, если нужна поддержка скобок, или даже минимальной работы со строками - если нет.
Ну или воспользоваться готовой библиотекой как предложили выше.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
raf_gal
@raf_gal
let string = "2+1"

let result = 0

let script_string = "(function(){  result = " + string +  "})()"

let script_element = document&createElement('script')
script_element.src = script_string
document.head.appendChild(script_element)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы