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函数 - 将字符串参数转换为运算符的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript中将字符串类型转换为整形的函数

JavaScript

JavaScript之类型转换

JavaScript的parseint()函数

javaScript中关于字符串的操作函数和方法

JSON.stringify 函数