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

时间:2018-07-27 01:14:42

标签: javascript ecmascript-6 refactoring eval

我将此函数与eval函数一起使用,它可以很好地评估具有预期“值”的字符串中定义的函数,但不理解为什么将引号“值”之间的变量作为函数的参数而不是参数字符串=值。

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

    if (eval("(" + funcString + ")("+'value'+")")){
       return true;
    }else{
       return false
    }
}

我已经尝试过了,但是总是返回false。

eval(`(${funcString})('value')`);

和这个(不带引号)

eval(`(${funcString})(value)`);

1 个答案:

答案 0 :(得分:0)

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