【问题标题】:if/else defines plus or minus in functionif/else 定义函数中的加号或减号
【发布时间】:2013-11-11 12:42:14
【问题描述】:

我有两个几乎相同的功能。它们之间的唯一区别是一个有+,一个有-。这些在每个函数中使用了大约 20 次,所以我很想用一个 var 来简化它。

我对 JavaScript 还是很陌生,所以我不知道从哪里开始,但是类似:

if ( blah blah ){
    var symbol = '-';
} else{
    var symbol = '+';
}

var example = value1 [symbol] value2;

谢谢

【问题讨论】:

标签: javascript math


【解决方案1】:

使用这个:

var modifier = (blah blah) ? 1 : -1;
var example = value1 + (modifier * value2);

【讨论】:

  • 如何将它用于*和/?
  • @KamilDąbrowski 这仅适用于 +/-。查看other answers 了解也适用于不同运营商的解决方案。
  • @KamilDąbrowski 您可以使用 * 和 / 4 * 4 / (isDivision ? (4 * 4) : 1) 做类似的事情
【解决方案2】:

您可以定义一个包含函数的对象,由操作员键入。像这样的:

var operations = {
    '+': function(a, b) { return a + b; },
    '-': function(a, b) { return a - b; }
}

var x = operations[condition ? '+' : '-'](value1, value2);

我认为@darthmaim 有最好的方法,但这取决于您是否需要使用其他运算符,例如*/%

【讨论】:

  • +1 - 我几乎要发布完全相同的东西。 [不是在开玩笑!] :-)
【解决方案3】:

为什么不这样:

if ( blah blah ){
    var example = value1 - value2;
} else{
    var example = value1 + value2;
}

【讨论】:

    【解决方案4】:

    嗯,你可以使用eval,但我会使用这样的函数:

    var op;
    if (condition) {
        op = function(a, b) { return a - b; };
    } else {
        op = function(a, b) { return a + b; };
    }
    
    var example = op(value1, value2);
    

    【讨论】:

      【解决方案5】:
      var math = {
          '+' : function(x,y) {return x + y;},
          '-' : function(x,y) {return x - y;}
      }
      
      var usePlus = true;
      math[usePlus ? '+' : '-'](1,2) // returns 3
      

      【讨论】:

        猜你喜欢
        • 2014-11-11
        • 2014-10-07
        • 2022-12-31
        • 2015-07-25
        • 2019-01-26
        • 2018-02-05
        • 1970-01-01
        相关资源
        最近更新 更多