在严格模式下用“替换”操作员

时间:2019-03-19 17:35:19

标签: 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 个答案:

答案 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))