javascript 中的动态运算符

Dynamic operators in javascript

我目前有一个很大的 switch 语句:

switch (arg) {
    case '+':
        equals = num1 + num2;
        break;
    case '-':
        equals = num1 - num2;
        break;
    case '*':
        equals = num1 * num2;
        break;
    case '/':
        equals = num1 / num2;
        break;
    case '%':
        equals = num1 % num2;
        break;
    default:
        error();
        return;
}

我想知道我是否可以做类似

的事情
equals = num1 /** Do the operation defined by a variable */ num2

或类似的东西,所以我没有大的 switch 语句我什至不确定从哪里开始寻找这样的东西,因为像“js 中的动态运算符”之类的东西没有提出我正在寻找的东西,任何帮助受到赞赏。

您可以尝试使用带有方法的对象。

const operations = {
  "+": (a, b) => a + b,
  "-": (a, b) => a - b,
  "*": (a, b) => a * b,
  "/": (a, b) => a / b,
  "%": (a, b) => a % b,
};

const action = (op, a, b) => operations[op](a, b);

console.log(action("+", 5, 6));
console.log(action("/", 4, 2));

正在动态创建函数。有关详细信息和安全问题,请参阅 MDN

或者,您可以动态创建函数。

function createOperation(op) {
    return new Function('return arguments[0]' + op + 'arguments[1]'); 
}

const add = createOperation('+');
const sub = createOperation('-');

console.log(add(5, 6))
console.log(sub(5, 2))