我正在尝试为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);
}
答案 0 :(得分:3)
根据您的约束,您可能会考虑将操作符映射到操作的对象。
var operations = {
'+': (a,b) => a+b,
'-': (a,b) => a-b,
'*': (a,b) => a*b,
'/': (a,b) => a/b
}
var number1 = 4;
var number2 = 9;
var operator = '+';
var operation = operations[operator];
console.log( operation(number1,number2) );
答案 1 :(得分:0)
您也可以使用此mathjs软件包。您可以像尝试使用以上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,但这有其优点和缺点。