Javascript 如何将eval语句更改为es6语法?

Javascript 如何将eval语句更改为es6语法?,javascript,ecmascript-6,refactoring,eval,Javascript,Ecmascript 6,Refactoring,Eval,我有一个带eval函数的函数,它可以很好地使用预期的“value”来计算字符串中定义的函数,但不理解为什么引号之间的变量“value”被计算为函数的参数,而不是字符串=value function evaluateString(value) { var funcString = "function validate(input){ return input === \"999999\"; }"; if (eval("(" + funcString + ")("+'value'+"

我有一个带eval函数的函数,它可以很好地使用预期的“value”来计算字符串中定义的函数,但不理解为什么引号之间的变量“value”被计算为函数的参数,而不是字符串=value

function evaluateString(value) {
   var funcString = "function validate(input){ return input === \"999999\"; }";

    if (eval("(" + funcString + ")("+'value'+")")){
       return true;
    }else{
       return false
    }
}
我试过了,但结果总是假的

eval(`(${funcString})('value')`);
还有这个(不加引号)

相当于您的第二次尝试:

eval(`(${funcString})(value)`);
唯一的问题是你的

var value = "2";
本质上覆盖函数参数的任何内容,因此即使使用eval修复,代码也会返回
false
。删除那行就行了。这就给你留下了

function evaluateString(value) {
   var funcString = "function validate(input){ return input === \"999999\"; }";
    if (eval(`(${funcString})(value)`)){
       return true;
    }else{
       return false
    }
}
evaluateString("999999"); // true
evaluateString("99999"); // false

你很好,谢谢。但我仍然有一个问题,es6版本一直在使用null@AguV我在回答中举了一个完整的例子。@AguV什么不起作用?如果你把它粘贴到Chrome控制台上,它会像你要求的那样打印真/假。如果它不起作用,那么你需要在你的问题中详细说明什么不起作用。
var value = "2";
function evaluateString(value) {
   var funcString = "function validate(input){ return input === \"999999\"; }";
    if (eval(`(${funcString})(value)`)){
       return true;
    }else{
       return false
    }
}
evaluateString("999999"); // true
evaluateString("99999"); // false