我将此函数与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)`);
答案 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