if / else在函数中定义加号或减号

时间:2013-10-31 13:23:14

标签: javascript math

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

来简化这个

我仍然是JavaScript的新手,所以我不知道从哪里开始,但是像:

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

var example = value1 [symbol] value2;

由于

5 个答案:

答案 0 :(得分:19)

使用此:

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

答案 1 :(得分:4)

您可以定义一个包含函数的对象,由运算符键入。像这样:

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

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

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

答案 2 :(得分:2)

为什么不这样:

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

答案 3 :(得分:1)

好吧,你可以使用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);

答案 4 :(得分:0)

var math = {
    '+' : function(x,y) {return x + y;},
    '-' : function(x,y) {return x - y;}
}

var usePlus = true;
math[usePlus ? '+' : '-'](1,2) // returns 3