2013-10-31 2 views
3

사실상 동일한 함수가 두 개 있습니다. 그들 사이의 유일한 차이점은 +이고 하나는 -입니다. 이것들은 각 함수에서 약 20 번 사용되므로, var로 이것을 더 간단하게 만들고 싶습니다.if/else가 함수에서 더하기 또는 빼기를 정의하면

나는 아직도 자바 스크립트를 아주 새로운, 그래서 어디서부터 시작 모르겠지만, 뭔가 같은 :

+0

이것은 jQuery와는 아무런 관련이 없습니다. 자바 스크립트입니다. 내가 당신을 위해 태그를 추가했습니다. –

+0

다음을 시도해보십시오. http://stackoverflow.com/questions/5834318/are-variable-operators-possible – Satpal

답변

14

사용 :

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

+1을위한 ellegance :) –

2

왜 그렇게

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

var example = value1 [symbol] value2; 

감사 :

if (blah blah){ 
    var example = value1 - value2; 
} else{ 
    var example = value1 + value2; 
} 
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

당신은 운영자에 의해 키가 기능을 포함하는 객체를 정의 할 수 있습니다. 이런 식으로 뭔가 :

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

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

내가 @darthmaim 그래도 가장 좋은 방법이 있다고 생각하지만, 당신이 그런 *, / 또는 % 같은 다른 연산자를 사용해야하는 경우가 달려있다.

+0

+1 - 나는 거의 ** 똑같은 ** 것을 게시하려고합니다. [장난하지 마라!] :-) – techfoobar

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

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

게시 ... – mplungjan

관련 문제