Как вычислить числа в строке в javascript?

Я получаю некоторые данные от пользователя и сохраняю их в теге div так же, как работает калькулятор, например, пользователь вводит 100-50+30, затем я сохраняю его в теге div, и когда пользователь нажимает кнопку «Перейти», я хочу чтобы показать ему результат, который равен 80. Я попробовал синтаксический анализ и число, поскольку строка содержит такие операторы, как +/*, они не работают.

var a = document.querySelector(".output").innerHTML;

Думаю eval здесь сработает

Maheer Ali 03.07.2019 21:28

Эвал злой...

Elias Soares 03.07.2019 21:29

@EliasSoares в целом я бы согласился, но если код OP равен строительство выражениям, то это не опасно; единственная реальная альтернатива - написать собственный синтаксический анализатор выражений.

Pointy 03.07.2019 21:30

Если вы хотите избежать потенциального выполнения кода, вы можете использовать существующую библиотеку, например математика.

Bali Balo 03.07.2019 21:36
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
571
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Используйте функцию eval()

var expression = '100-50+30';
console.info(eval(expression));

Функция eval() оценивает код JavaScript, представленный в виде строки.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval

Вы можете просто использовать eval, но из соображений безопасности я бы рекомендовал удалить все из пользовательского ввода, кроме цифр и разрешенных операторов, перед оценкой выражения:

const input = '100-50+30 [some malicious code]'

const result = eval(input.replace(/[^0-9\+\-\*/]/g, ''));

console.info(result)

Если вам нужна более надежная проверка, например. избегайте потенциальных ошибок, убедитесь, что формат использует /^[+-]?\d+([+/*-]\d+)*$/.test(input), и не выполняйте, если он возвращает false. Если вы хотите также обрабатывать десятичные числа, это будет немного сложнее (и будет зависеть от того, хотите ли вы поддерживать такие вещи, как .5 и 1., как допустимые числа)

Bali Balo 03.07.2019 21:43

Другие вопросы по теме