2016-07-25 181 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倍) ,並檢查函數內部參數的存在。它已經完成了參數「秒」。

此方法是否有效?

謝謝

+2

是的,這是一種有效的方法。 – urvashi

+1

@Wexoni基於'checkPeople'函數,這可以工作,是的。它是否必須對每個人進行相同的檢查,或者是否具有基於參數的不同功能? – DoXicK

+0

這是通常的做法。或者有時他們添加默認值 –

回答

1

如果你在這樣的參數傳遞,當你調用函數,使用空作爲第二個參數,則不會撥打第二個。假設這就是你想要做的。 checkPeople(first, null, third)

0

我打算在這裏做一個假設,但是因爲函數被調用checkPeople我會假設你對每個人都進行相同的檢查(例如:檢查每個人是否他。 ..存在)

如果是這樣的話:

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

現在,你可以這樣做:如果確實有二

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

不同的檢查爲first,secondthird參數,那麼你確實仍然必須執行if (second) { .. }檢查。

+0

在「現在,你可以做到這一點」下的第一個選項與你的代碼不匹配。你是不是想把這三個名字放到一個數組中並傳遞數組? – jfriend00

+0

@ jfriend00廢話,哈哈。我重寫了該函數,但忘記更新一行。更新! – DoXicK