javascriptvariablesoperatorsoperator-keyworddynamic-variables

Are Variable Operators Possible?


Is there a way to do something similar to either of the following:

var1 = 10; var2 = 20;
var operator = "<";
console.log(var1 operator var2); // returns true

-- OR --

var1 = 10; var2 = 20;
var operator = "+";
total = var1 operator var2; // total === 30

Solution

  • Not out of the box. However, it's easy to build by hand in many languages including JS.

    var operators = {
        '+': function(a, b) { return a + b },
        '<': function(a, b) { return a < b },
         // ...
    };
    
    var op = '+';
    alert(operators[op](10, 20));
    

    You can use ascii-based names like plus, to avoid going through strings if you don't need to. However, half of the questions similar to this one were asked because someone had strings representing operators and wanted functions from them.