2011-11-15 50 views
1

我有一個帶有2個參數的函數,無論是否在第二個參數被分配,它都應該有效。基本上,如果它被分配,然後做一些事情,如果不做其他事情,或者只是不打擾它。檢查參數是否分配在javascript

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 ||'行中使用它。 null;'但下次看來你正在爲它指定一些符號('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:如果target進行評估,以false,它分配給null。請注意空字符串,零號(0),NaNundefined,null,false評估爲false。所以請小心編寫這樣的代碼。

1

target = target || null會工作。

你在這裏做的是在函數的範圍內聲明一個局部變量。

在每個函數中,會創建一個與參數名稱對應的局部變量來保存傳入的值。

如果參數未被傳遞,它將保持爲'未定義'的局部變量。

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

什麼target = target || null不只是一個值賦給一個聲明的局部變量它使用||表達:

||表達由第一操作數確定的值返回true。當你調用一個函數,如果傳遞比預期更少的參數

true || 2會被評價爲true

false || 2會被評價爲2