8

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

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

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

var example = value1 [symbol] value2;

谢谢

4

5 回答 5

22

用这个:

var modifier = (blah blah) ? 1 : -1;
var example = value1 + (modifier * value2);
于 2013-10-31T13:26:39.103 回答
6

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

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

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

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

于 2013-10-31T13:28:44.783 回答
2

为什么不这样:

if ( blah blah ){
    var example = value1 - value2;
} else{
    var example = value1 + value2;
}
于 2013-10-31T13:25:47.847 回答
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);
于 2013-10-31T13:27:22.567 回答
0
var math = {
    '+' : function(x,y) {return x + y;},
    '-' : function(x,y) {return x - y;}
}

var usePlus = true;
math[usePlus ? '+' : '-'](1,2) // returns 3
于 2013-10-31T13:31:59.533 回答