2016-07-25 9 views
0

私は大きなコードベースを持っており、私は追加の機能を実装することを任されています。コードはNode.js - Javascriptです。機能 - 引数を渡す。

あり一つの関数であり、それはこのように書きます。同じ関数が複数回呼び出されたが、一般的にそれはのように呼ばれていること

function checkPeople(first, second) { 
if(second) { 
    //do some things... 
    } 
} 

checkPeople(first); 

か...

checkPeople(first, second); 

何が使用されているかによって異なります。パラメータ「first」は常に送信されます。

今、私は同じ関数に余分な機能を追加する必要がなく、三番目のパラメータで:

function checkPeople(first, second, third) { 
    if(second) { 
    //do some things... 
    } 
    if(third) { 
    //do some things 
    } 
} 

私は関数は(2倍程度)と呼ばれているところはどこでも、関数に三番目のパラメータを追加することを考えていました関数内のパラメータの存在を確認します。これはすでにパラメータ "second"に対して実行されています。

このアプローチは有効ですか?関数を呼び出すときに、このような引数を渡す場合

が2番目の引数としてnullを使用して、あなたに

+2

はい、有効なアプローチです。 – urvashi

+1

@Wexoni 'checkPeople'関数に基づいて、これはうまくいくかもしれません。すべての人に同じチェックを行わなければならないのですか、それともパラメータに基づいて異なる機能を持っていますか? – DoXicK

+0

これは通常行われる方法です。または、時々彼らはデフォルト値を追加する –

答えて

1

をありがとう、それは第二を呼び出すことはありません。それがあなたがしようとしているものと仮定します。 checkPeople(first, null, third)

0

私はここで前提にしていますが、その機能はcheckPeopleと呼ばれているため、すべての人に同じチェックを行っていると仮定します(たとえば、 ...が存在する)

その場合は:?ディが実際に存在する場合

var results = checkPerson('eric','peter','james'); // [true, false, false]; 
var result = checkPerson('eric'); // [true] 
var result = checkPerson('james'); // [false] 

function checkPeople() 
{ 
    var people = Array.prototype.slice.call(arguments); 
    return people.map(function(person) { 
     return person == 'eric'; // only eric is a person today 
    }); 
} 

、あなたがこれを行うことができますファンクションでfirst,secondおよびthirdのパラメータがチェックされている場合は、実際にはif (second) { .. }のチェックを実装する必要があります。

+0

「今すぐできること」の下にある最初のオプションは、コードと一致しません。 3つの名前を配列に入れ、配列だけを渡すことを意味しましたか? – jfriend00

+0

@ jfriend00クラップ、ハハ。私は関数を書き直しましたが、1行を更新するのを忘れました。更新しました! – DoXicK