【问题标题】:Dynamic operators in javascriptjavascript中的动态运算符
【发布时间】:2021-08-22 17:59:20
【问题描述】:

我目前有一个大的 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 中的动态运算符”这样的东西并没有带来我正在寻找的东西,任何帮助都是值得赞赏的.

【问题讨论】:

    标签: variables math switch-statement operators


    【解决方案1】:

    您可以尝试将对象与方法一起使用。

    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))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-21
      • 1970-01-01
      • 2018-01-20
      • 1970-01-01
      • 1970-01-01
      • 2010-09-11
      • 2021-12-04
      相关资源
      最近更新 更多