2014-07-06 3 views
-1

리팩토링하는 가장 좋은 방법은 자바 스크립트 대체 방법입니다. 여러 가지 변수에 대해이 동일한 메소드를 호출해야하며 리팩토링에 대한 모범 사례가 확실하지 않습니다.리팩터링 자바 스크립트 바꾸기 방법

function profitMargin(){ 
var revenue = jQuery("#revenue").val().replace(/[^\d.-]/g, ''); 
var profit = jQuery("#profit").val().replace(/[^\d.-]/g, ''); 
var profitMar = (profit/revenue*100).toFixed(4); 
+0

언제나 새로운 기능을 만들 수 있습니다. 말해, 'dropNumericPrefix' –

답변

1

곳에서나 같은 정규 표현식을 반복하지 않으려 경우에 당신은 변수에 그 넣을 수 있습니다 :

var reNonNumeric = /[^\d.-]/g; 
// and then later 
var revenue = jQuery("#revenue").val().replace(reNonNumeric, ''); 
var profit = jQuery("#profit").val().replace(reNonNumeric, ''); 
// etc. 

좀 더 효율적이 하나의 정규식을 생성하는 당신의 코드를 만든다 개체 및 좀 더 설명적인 (변수의 이름 지정 방법에 따라 다름).

또는 교체의 유형 할 수있는 기능을 만들 수 있습니다 귀하의 revenueprofit 변수 문자열을 포함하는 것 어느 쪽이든 것을

function removeNonNumericCharacters(val) { 
    return val.replace(/[^\d.-]/g, ''); 
} 

// which you'd use later with: 
var revenue = removeNonNumericCharacters(jQuery("#revenue").val()); 
var profit = removeNonNumericCharacters(jQuery("#profit").val()); 

참고. / 연산자는 피연산자를 숫자로 변환하지만 정규 표현식을 사용하면 실제로 이러한 변환이 가능하지는 않습니다. 사용자가 정규 표현식에서 허용 할 수 있지만 분명히 ' 유효한 번호.

0
String.prototype.yourFunction = function() { 
    return this.replace(/[^\d.-]/g, ''); 
} 

var revenue = jQuery("#revenue").val().yourFunction(); 

희망이 도움이 될 것입니다.

0

@ nnnnnn의 답변 외에도 jquery 요소를 변수에 저장하여 함수를 호출 할 때마다 DOM에서 해당 요소를 찾을 수 있습니다.

var $revenue = jQuery("#revenue"), 
    $profit = jQuery("#profit"); 



// Later in your function 
var revenue = $revenue.val().replace(/[^\d.-]/g, ''); 
var profit = $profit.val().replace(/[^\d.-]/g, ''); 
관련 문제