Javascript函数 - 将字符串参数转换为运算符
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Javascript函数 - 将字符串参数转换为运算符相关的知识,希望对你有一定的参考价值。
抱歉,如果我的问题不清楚,不知道如何说出来!
我正在尝试创建一个带两个数字的函数和一个包含运算符的字符串(例如'+',' - ','*','/')。
我在字符串上使用.valueOf()来提取运算符,但是num1和num2参数似乎没有计算为传递的数字参数。为什么会这样?
function calculate(num1, operator, num2) {
return `num1 ${operator.valueOf()} num2`;
}
undefined
calculate(2, '+', 1);
"num1 + num2" //result
答案
如果我了解您的要求,您可以使用eval()
来实现此目的:
function calculate(num1, operator, num2) {
return eval(`${num1} ${operator} ${num2}`);
}
console.log(calculate(2, '+', 1)); // 3
或者,您可以通过使用开关块避免使用eval()
,would make your code easier to debug and potentially more secure:
function calculate(num1, operator, num2) {
switch (operator.trim()) { // Trim possible white spaces to improve reliability
case '+':
return num1 + num2
case '-':
return num1 - num2
case '/':
return num1 / num2
case '*':
return num1 * num2
}
}
console.log(calculate(2, '+', 1)); // 3
另一答案
执行所需操作的最佳方法是使用将操作员名称映射到函数的对象。
const opmap = {
"+": (x, y) => x + y,
"-": (x, y) => x - y,
"*": (x, y) => x * y,
"/": (x, y) => x / y,
};
function calculate(num1, operator, num2) {
if (operator in opmap) {
return opmap[operator](num1, num2);
}
}
console.log(calculate(2, '+', 1));
以上是关于Javascript函数 - 将字符串参数转换为运算符的主要内容,如果未能解决你的问题,请参考以下文章