Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript eval()有其他选择吗?_Javascript_Dialogflow Es - Fatal编程技术网

Javascript eval()有其他选择吗?

Javascript eval()有其他选择吗?,javascript,dialogflow-es,Javascript,Dialogflow Es,我正在尝试为Dialogflow应用程序创建一个计算函数。 我读过关于使用eval()的文章,它可能是有害的。我的函数是否有其他方法 例如: var number = 4 var number1 = 9 var opreator = '+' console.log(eval(number +opreator+ number1)); 我的代码: function Calculation(agent){ var number = request.body.queryResult.outp

我正在尝试为Dialogflow应用程序创建一个计算函数。 我读过关于使用eval()的文章,它可能是有害的。我的函数是否有其他方法

例如:

var number = 4
var number1 = 9
var opreator = '+'

console.log(eval(number +opreator+ number1));

我的代码:

function Calculation(agent){

  var number = request.body.queryResult.outputContexts[0].parameters.number;
  var number1 = request.body.queryResult.outputContexts[0].parameters.number1;
  var opreator = request.body.queryResult.outputContexts[0].parameters.calculation;

  var result = (eval(number+opreator+number1));

  agent.add(result);

}

根据您的约束,您可以考虑将运算符映射到操作的对象。

var操作={
“+”:(a,b)=>a+b,
“-”:(a,b)=>a-b,
“*”:(a,b)=>a*b,
“/”:(a,b)=>a/b
}
变量1=4;
变量数2=9;
var运算符='+';
var操作=操作[操作员];
控制台日志(操作(编号1、编号2))您也可以使用此软件包。您可以使用
math.eval()
与上面尝试使用
eval()
的方法相同

var number = 4
var number1 = 9
var operator = '+'

console.log(math.eval(number + operator + number1)); // 13
console.log(typeof math.eval(number + operator + number1)); // "number"

缺点是您必须下载整个软件包,当缩小和压缩时,这个软件包的大小为136 kB。请注意,它们也有一个用于相同用途的公共API,但这有其自身的优点和缺点。

操作符的潜在价值是什么?你能把每一个都映射到一个函数吗,比如
var操作符={'+':函数(a,b){returna+b;}
运算符[运算符](数字,数字1)
?与几乎所有的eval一样,是的,您描述的代码存在一个巨大的问题。巨大的。恶意用户可能会利用将请求查询转换为代码的优势,在毫无戒心的人点击他们的站点链接时执行任何JavaScript。我假设你有操作员列表,使用切换案例,而不是evalgoogle“谓词引擎”,准备进入兔子洞