2011-11-15 2 views
1

2 개의 매개 변수가있는 함수가 있는데 두 번째 매개 변수가 대괄호에 할당되었는지 여부에 관계없이 작동합니다. 기본적으로, 할당 된 경우 다른 작업을 수행하지 않거나 그냥 신경 쓰지 않으면 무언가를 수행하십시오. 자바 스크립트에서 매개 변수가 지정되었는지 여부 확인

vf.showHide = function (trigger, target) { 
    var $trigger = $(trigger), 
     trigParent = $trigger.parent(), 
     trigDataView = $trigger.data('view'), 
     numShown = $trigger.data('showalways'), 
     basketSubtotalElem = $('.subtotal .monthlyCost span.price, .subtotal .oneOffCost span.price, .subtotal label h3, .vat *'); 

    target = target || null; // This is the 2nd parameter but I don't know if this right... 

    trigParent.delegate(trigger, 'click', function (e) { 
     var elem = $(this); 

     target = $(elem.attr('href')); 

     e.preventDefault(); 

     if (trigDataView === 'showhide') { 
      if($('.filterBlock')){ 
       if (target.is(':visible')) { 
        target.hide(); 
        elem.find('span').removeClass('minus').addClass('plus'); 
       } else { 
        target.show(); 
        elem.find('span').removeClass('plus').addClass('minus'); 
       } 
      } 
     } 
    }); 
} 

은 그래서 함수가 다음과 같이 호출되는 경우 : vf.showHide('a', 'div') 작동과이 같은 1 개 매개 변수라고하면 : vf.showHide('a')을 그건해야 여전히 작동과 오류가 발생합니다.

많은 감사

+0

정확히 무엇을하려합니까? 목표가 정의되지 않은 경우 함수에서 수행하고자하는 작업 "다른 작업을 수행하지 않거나 그것에 대해 신경 쓰지 않는다면 무엇을 의미합니까?" –

+0

@ Keith.Abramo : 기본적으로이 기능이 기본 작업을 수행하기를 원합니다. 두 번째 매개 변수가 지정되지 않았 으면 할당 된 다음 해당 매개 변수를 사용하십시오. – Shaoz

+0

두 번째 매개 변수는 어디에도 사용되지 않습니다 ...'target = target || 널;하지만 다음 번에 당신이 그것에 somethign을 할당하는 것으로 보일 때 ('target = $ (elem.attr ('href'));'). 나는 네가하고 싶은 것을 더 잘 설명해야한다고 생각한다. 위의 설명에서 기본 작업이 무엇인지 명확하지 않으며 할당 된 경우 다음 용도로 사용하고 싶습니다. – Chris

답변

2

로 평가 될 것입니다, 당신은 생략 매개 변수는 undefined 값이 제공됩니다. 귀하의 경우 그래서 :

vf.showHide = function(trigger, target) { 
    if (target === undefined) { 
     //target parameter is not passed any value or passed undefined value 
     //add code to process here, e.g. assign target a default value 
    } 
} 

target = target || null : targetfalse로 평가되는 경우, 그것은 null에 할당. 빈 문자열 인 0이 아닌 숫자 (0) 인 NaN, undefined, null, falsefalse으로 계산됩니다. 그래서 이런 식의 코드를 작성하도록주의하십시오.

1

target = target || null 작동합니다.

여기에서하는 일은 함수의 범위 내에서 지역 변수를 선언하는 것입니다.

각 함수 내에서 전달 된 값을 보유하기 위해 매개 변수 이름에 해당하는 로컬 변수가 만들어집니다.

매개 변수가 전달되지 않으면 '정의되지 않은'로컬 변수로 유지됩니다.

|| 식 제 피연산자에 의해 결정된다의 값 true을 반환 : target = target || null가 무엇

function (a, b) { 
    //a, b are declared. 
} 

|| 식을 사용 선언 로컬 변수에 값을 할당한다. 예상보다 적은 수의 매개 변수를 전달하는 경우, 함수를 호출 할 때

true || 2true

false || 2로 평가 될 것이다이 2

관련 문제