#javascript #vue.js
#javascript #vue.js
Вопрос:
У меня есть строковое значение, которое ввел пользователь, например, переменная f.
f = "1/log(x)";
В ванильном JavaScript я использовал оператор с:
f = "with (Math) {" f "}";
Код отлично работает на ванильном javascript, но я использую Vue js и сталкиваюсь с проблемами в строгом режиме. Я не знаю, как заменить этот оператор. Кто сталкивался с этой проблемой, пожалуйста, ответьте мне.
Я пытаюсь это:
let math = Math
math.f = f
console.log(f)
Но ничего не работает.
Комментарии:
1. Кроме самостоятельного определения всех методов или обнаружения всех используемых вами математических элементов и их замены, вы ничего не можете сделать, поскольку with не поддерживается в строгом режиме.
2. вкратце, мой простой способ — это, например, изменить vue js на jquery?
3. Не уверен, как jQuery можно использовать в качестве замены vue.
4. Дело в том, что в jquery этот код работает, с оператором «with».
5. потому что вы не используете строгий режим с jQuery. Если вы установите строгий режим, это также приведет к сбою.
Ответ №1:
В принципе, with не рекомендуется использовать, поскольку это может вызвать проблемы в программах. Итак, каковы ваши варианты?
определите набор глобальных значений
const sqrt = Math.sqrt
const log = Math.log
const test1 = new Function("a","return sqrt(a)")
const test2 = new Function("b","return log(b)")
console.log(test1(4))
console.log(test2(100))
Другой вариант — выполнить замены с помощью reg exp
const fixMath = eq => eq.replace(/(sqrt|log|pow)/g,'Math.$1')
const test1 = new Function("a", fixMath("return sqrt(a)"))
const test2 = new Function("b", fixMath("return log(b)"))
const test3 = new Function("a", "b", fixMath("return pow(a, b)"))
const test4 = new Function("a", "b", fixMath("return sqrt(pow(a, 2) pow(b, 2))"))
console.log(test1(4))
console.log(test2(100))
console.log(test3(10, 3))
console.log(test4(3, 3))
Комментарии:
1. Журнал — это, например. Математическую функцию ввел пользователь.
2. итак …. чем это отличается от жестко закодированной строки? Вам нужно будет установить все свойства Math, которые вы хотите поддерживать,..