我有输入用户的字符串值,例如变量f。
f = "1/log(x)";
在普通JavaScript中,我将运算符用于:
f = "with (Math) {" + f + "}";
该代码在普通javascript中表现出色,但是我使用Vue js并在严格模式下有问题。我不知道如何替换此运算符。谁遇到这个问题请回答我。
我尝试:
let math = Math
math.f = f
console.log(f)
但是没有用。
答案 0 :(得分:0)
,基本上使用,因为它可能导致程序出现问题。那你有什么选择呢?
定义一堆全局变量
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))