2011-11-15 10 views
1

2つのパラメータを持つ関数があり、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:基本的には、 2番目のパラメータは割り当てられておらず、割り当てられている場合はそのパラメータを使用します。 – Shaoz

+0

2番目のパラメータはどこでも使用されていないようです... '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 || nulltargetfalseに評価された場合、それがnullに割り当てられています。空の文字列、ゼロ数(0)、NaNundefinednullfalseは、falseと評価されます。そのようなコードを書くように注意してください。

1

target = target || nullは動作します。

ここでは、関数のスコープ内でローカル変数を宣言しています。

各関数内で、渡された値を保持するために、パラメータの名前に対応するローカル変数が作成されます。

パラメータが渡されないと、ローカル変数 'undefined'のままになります。

||式は最初のオペランドによって決定されるの値はtrueを返す:target = target || nullが何

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

はちょうどそれが||表現を使う宣言されたローカル変数に値を割り当てるです。あなたが予想より少ないパラメータを渡す場合は、関数を呼び出した場合

true || 2true

false || 2として評価されますが2

関連する問題